#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)