python - 如何使用方法链从 pandas DataFrame 中删除行?

标签 python pandas method-chaining

pandas 有类似 dplyr 的 filter() 操作吗? 基本上,我希望能够根据谓词删除行。

我当然可以做 df = df[condition],但这不像方法链那样很好地组合。

最佳答案

使用query

考虑数据框 df

df = pd.DataFrame(
    np.random.randint(-5, 6, (10, 10)),
    columns=list('ABCDEFGHIJ'))

df

   A  B  C  D  E  F  G  H  I  J
0  0  4 -1  1 -3 -1 -4 -5 -1  2
1 -4  2 -1  0  5 -1  1 -3  1  4
2  3 -2  3 -2 -4  5  1  1  0 -2
3  1  4 -5  4 -3 -3 -3 -3 -4  4
4 -3  4  4  5 -2 -3 -1  3  3 -1
5  0  0 -1 -1  2  2  5 -4 -1 -1
6 -2  1  2  0 -1 -1  1  0  4 -4
7  5  2  5  2  3  2  3 -3  1  1
8 -2 -5  1  4  0 -1  4  4 -5  3
9 -3 -2 -5  0 -5 -2 -2  2  0 -1

您可以轻松地根据过滤条件进行流水线操作

df.query('A < 0')

   A  B  C  D  E  F  G  H  I  J
1 -4  2 -1  0  5 -1  1 -3  1  4
4 -3  4  4  5 -2 -3 -1  3  3 -1
6 -2  1  2  0 -1 -1  1  0  4 -4
8 -2 -5  1  4  0 -1  4  4 -5  3
9 -3 -2 -5  0 -5 -2 -2  2  0 -1

你可以包含多个条件

df.query('A < 0 & B < -1')

   A  B  C  D  E  F  G  H  I  J
8 -2 -5  1  4  0 -1  4  4 -5  3
9 -3 -2 -5  0 -5 -2 -2  2  0 -1

你可以做很多很酷的事情

df.query('-3 < A < 3 & H * J > 0')

   A  B  C  D  E  F  G  H  I  J
5  0  0 -1 -1  2  2  5 -4 -1 -1
8 -2 -5  1  4  0 -1  4  4 -5  3

所有这些都作为数据框返回以启用下一个操作

关于python - 如何使用方法链从 pandas DataFrame 中删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42007401/

相关文章:

activerecord - 在 Play! 中链接查询框架

php - 检查调用是否是方法链接

python - 用行值替换 Pandas 索引

python - Pandas 将两列值添加到新数据框

python - 当客户端连接不稳定时,在 heroku 上运行的 django 中的工作人员卡在岗位上

python - 从列表中的所有字符串中删除一个字符

python - 2 groupby 在同一个数据框中,可能吗?

python - 为什么这个 Numpy 函数链中需要命名表达式?

python - 解析 SQL 查询文本以提取使用的表名称

python - luigi 目标不存在的表