Python 3.7+Numpy+pandas Arrays 选择范围内的数据

Python 3.7+Numpy+pandas Arrays Selecting data between a range

好的,我将尝试解释我的问题,我有一个包含数据的 csv 文件,数据是波长和振幅,图像包含在此处。

CSV data

所以,我想select只有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)]

这首先满足了我的要求,但我想将此 selection 扩展到振幅 (X) 列,以具有两个相同维度的数组。在我的实际代码中,我必须为 select 振幅数组(X)中的数据建立索引:

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

但这不是最佳做法,如果我不能将第一列 selection 扩展到振幅列,我就不必制作另一个数组来索引 X 数组,并检查扩展数组,有什么想法吗? 谢谢。

就像@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