根据多列的条件从熊猫中删除/选择行

时间:2019-05-08 05:20:15

标签: pandas dataframe

从熊猫数据框中,我需要根据数据框中的两列所施加的条件删除特定的行。

数据框为

          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 1columns 2之间的差小于阈值t

abs(column1.iloc[index]-column2.iloc[index]) < t

我看到了一些示例,其中条件分别应用于列值,但找不到基于多列条件而删除行的任何内容。

1 个答案:

答案 0 :(得分:2)

首先通过DataFrame.iloc选择位置的列,减去,得到Series.abs,通过脱粒比较与inverse<>=或{{1 }}并按boolean indexing进行过滤:

>

如果需要按名称选择列,请在df = df[(df.iloc[:, 0]-df.iloc[:, 1]).abs() >= t] 0

1