首页 > 解决方案 > 根据多列上的条件从熊猫中删除/选择行

问题描述

从熊猫数据框中,我需要根据应用于数据框两列的条件删除特定行。

数据框是

          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小于 threshold的一些行t

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

我已经看到了将条件单独应用于列值的示例,但没有找到根据应用于多列的条件删除行的任何内容。

标签: pandasdataframe

解决方案


首先按DataFrame.iloc位置选择列,减去,获取Series.abs,按阈值与操作符比较,如inverse或并过滤:<>=>boolean indexing

df = df[(df.iloc[:, 0]-df.iloc[:, 1]).abs() >= t]

如果需要按名称选择列,请在此处01

df = df[(df[0]-df[1]).abs() >= t]

推荐阅读