pandas - 根据多列上的条件从熊猫中删除/选择行
问题描述
从熊猫数据框中,我需要根据应用于数据框两列的条件删除特定行。
数据框是
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
我已经看到了将条件单独应用于列值的示例,但没有找到根据应用于多列的条件删除行的任何内容。
解决方案
首先按DataFrame.iloc
位置选择列,减去,获取Series.abs
,按阈值与操作符比较,如inverse
或并过滤:<
>=
>
boolean indexing
df = df[(df.iloc[:, 0]-df.iloc[:, 1]).abs() >= t]
如果需要按名称选择列,请在此处0
和1
:
df = df[(df[0]-df[1]).abs() >= t]
推荐阅读
- jquery - 在进行快速编辑时更新 edit.php 表单上的自定义选择选项?
- raku - Raku 控制语句使数字字符串解释为数字
- maven - 使用maven打包多个jar
- reactjs - 重置后复选框无法正常工作
- c# - Dapper QueryMultipleAsync 忽略参数
- go - 使用 telegraf inputs.logparser.grok 时过滤字符串的自定义模式
- apache-spark - 使用 Spark Streaming 在窗口中进行迭代计算
- scala - 在 Scala 2.13 和 Mill 项目中使用宏生成的源代码在 Intellij 中找不到
- artificial-intelligence - 这个算法问题的时间复杂度是多少?
- c++ - 是否有一个 C++ 函数可以准确返回内置 CPU 操作 RSQRTSS 的反平方根值?