Python 3.7 + Numpy + pandas数组在范围之间选择数据

时间:2019-03-04 19:10:10

标签: python pandas numpy python-3.7

好,我要尝试解释我的问题,我有一个带数据的csv文件,数据是波长和幅度,图像包含在这里。

CSV data

所以,我只选择500nm至800nm(波)之间的数据,

import pandas as pd
import numpy as np
excelfile=pd.read_csv('Files/660nm.csv');
excelfile.head();
wave = excelfile['Longitud'];
wave = np.array(wave);
X = excelfile['Amplitud'];
X = np.array(X);
wave = wave[(wave > 500) & (wave < 800)]

这确实满足了我的初衷,但我想将此选择扩展到幅度(X)列,以具有两个尺寸相同的数组。在我的实际代码中,我必须创建一个索引以选择振幅数组(X)中的数据:

indices = np.arange(382,775,1)
X = np.take(X, indices)

但这不是最佳实践,如果我不能将第一个列选择扩展到振幅列,则不必制作另一个数组来索引X数组,也不必检查该数组的扩展,有关呢? 谢谢。

1 个答案:

答案 0 :(得分:0)

就像@ALollz指出的那样,您不应该拆分DataFrame。而是只过滤整个数据帧的波长。请参阅DataFrame.loc

的文档
import pandas as pd
import numpy as np

# some dummy data
excelfile = pd.DataFrame({'Longitud': np.random.random(100) * 1000,
                          'Amplitud': np.arange(100)})

wave = excelfile['Longitud']
excelfile_filtered = excelfile.loc[(wave > 500) & (wave < 800)]
X = excelfile_filtered ['Amplitud'].values  # yields an array