Извлечение набора данных с заданным диапазоном из большего набора данных

#python #arrays #python-3.x #dataframe #sorting

#python #массивы #python-3.x #фрейм данных #сортировка

Вопрос:

У меня есть 2D-набор данных типа со значениями (X, Y) как таковыми:

X Y
99.96 2
99.76 4
100.15 6
100.28 `0
100.66 11
101.17 14
102.36 4

Я хочу извлечь часть приведенного выше 2D-набора данных таким образом, чтобы 100.00 <= X <= 100.99 и соответствующие ему значения Y. Таким образом, сгенерированный результат будет таким:

X Y
100.15 6
100.28 `0
100.66 11

Может кто-нибудь, пожалуйста, дайте мне знать, как нам это сделать на Python?

Комментарии:

1. Привет, @RanjanPal — помогает ли вам сообщение? Или какие-либо последующие вопросы?

2. Большое спасибо @DanielHao за ваши предложения. Однако существует ли какая-либо аналогичная логика, которая может быть применена для numpy.ndarray?

Ответ №1:

Вы можете создать фрейм данных из своих данных с помощью pandas и фильтровать с помощью between.

вы можете использовать pd.read_csv , pd.read_excel, pd.from_dict и т. Д., Чтобы Легко преобразовать исходные данные.

 
import pandas as pd

# example pd read csv
# df = pd.read_csv('somefile.csv', header=0)

df = pd.DataFrame([[1,2],[3,4],[5,6],[2,3],[4,5]], columns=['a','b'])

print(df[df['a'].between(2,4)])


#   a  b
#1  3  4
#3  2  3
#4  4  5



 

Комментарии:

1. Большое спасибо @KJDII за ваш ценный отзыв.

Ответ №2:

Может быть, просто простой цикл, без какого-либо 3rd party пакета? Если вам нужно сохранить результат, вы просто заменяете print оператор на result.append() .

 data = [[99.96, 2],
        [97, 4],
        [100.15,6],
        [100.28,0],
        [101.17, 14],
        [102.36, 11]]


for x, y in data:
    #print(x, y)
    
    if 100.00 <= x <= 100.99:
        print(x, y)
 

Комментарии:

1. Большое спасибо @DanielHao за ваши предложения.

Ответ №3:

Если данные имеют тип «numpy.ndarray», то мы можем использовать команду ‘where’ как таковую:

 import numpy as np

# Origianl data
data =  np.array([[99.96,2],[99.76,4],[100.15,6],[100.28,0],[100.66,11],[101.17,14],[102.36,4]])
print("n","Original data=n",data)


# Extracted Data
data_extracted = data[np.where((data[:,0] >= 100.001) amp; ( data[:,0]<= 100.999))]
print("n","Extracted data=n",data_extracted)