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

问题描述 投票:1回答:1

好的我将尝试解释我的问题,我有一个带有数据的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数组,并检查数组的扩展,对它的任何想法?谢谢。

python pandas numpy python-3.7
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.