从熊猫数据框中,我需要根据数据框中的两列所施加的条件删除特定的行。
数据框为
0 1 2 3
0 -0.225730 -1.376075 0.187749 0.763307
1 0.031392 0.752496 -1.504769 -1.247581
2 -0.442992 -0.323782 -0.710859 -0.502574
3 -0.948055 -0.224910 -1.337001 3.328741
4 1.879985 -0.968238 1.229118 -1.044477
5 0.440025 -0.809856 -0.336522 0.787792
6 1.499040 0.195022 0.387194 0.952725
7 -0.923592 -1.394025 -0.623201 -0.738013
我需要删除一些行,其中column 1
和columns 2
之间的差小于阈值t
。
abs(column1.iloc[index]-column2.iloc[index]) < t
我看到了一些示例,其中条件分别应用于列值,但找不到基于多列条件而删除行的任何内容。
答案 0 :(得分:2)
首先通过DataFrame.iloc
选择位置的列,减去,得到Series.abs
,通过脱粒比较与inverse
像<
到>=
或{{1 }}并按boolean indexing
进行过滤:
>
如果需要按名称选择列,请在df = df[(df.iloc[:, 0]-df.iloc[:, 1]).abs() >= t]
和0
:
1