gpt4 book ai didi

Python Pandas 分组依据并排除基于另一列的值

转载 作者:行者123 更新时间:2023-11-28 22:17:19 26 4
gpt4 key购买 nike

我有一个包含三列 ID、Col1 和 Col2 的数据框。我想按 ID 和 Col1 对 df 进行分组,并删除所有低于 Col2 中值的 Col1 值。

import pandas as pd

df = pd.DataFrame({'ID': ['A', 'A', 'A', 'A', 'B', 'B', 'B']},
{'Col1': [0, 1, 2, 4, 0, 1, 2]},
{"Col2": [1, 1, 1, 1, 2, 2, 2]})

ID Col1 Col2
0 A 0 1
1 A 1 1
2 A 2 1
3 A 4 1
4 B 0 2
5 B 1 2
6 B 2 2

最终结果应该是这样的

  ID  Col1
0 A 1
1 A 2
2 A 4
3 B 2

我可以通过遍历数据帧并将其拆分成 block 来实现,但必须有一种使用 Pandas 函数的更简单、更快速的方法。

最佳答案

我觉得groupby没必要,用boolean indexing仅使用 loc 按名称过滤列:

df1 = df.loc[df['Col1'].ge(df['Col2']), ['ID', 'Col1']]
#alternative
#df1 = df.loc[df['Col1'] >= df['Col2'], ['ID', 'Col1']]

print (df1)

ID Col1
1 A 1
2 A 2
3 A 4
6 B 2

关于Python Pandas 分组依据并排除基于另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51498873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com