gpt4 book ai didi

python - 如何比较 Pandas 数据框中的行

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:23 25 4
gpt4 key购买 nike

我希望能够比较 ID 号相同的 2 行(例如第 0 行和第 1 行),然后删除绝对收入较小的行。有什么办法可以只使用 pandas 函数而不是使用 .itertuples() 遍历行来做到这一点。我正在考虑使用 .shift 和 .apply,但我不确定如何执行。

 Index   ID             Income  
0 2011000070 55019
1 2011000070 0
2 2011000074 23879
3 2011000074 0
4 2011000078 0
5 2011000078 0
6 2011000118 -32500
7 2011000118 0

我想要的输出:

 Index   ID             Income  
0 2011000070 55019
2 2011000074 23879
4 2011000078 0
6 2011000118 -32500

最佳答案

你需要DataFrameGroupBy.idxmaxSeries.abs对于最大绝对值的索引,然后按 loc 选择行:

print (df.groupby('ID')['Income'].apply(lambda x: x.abs().idxmax()))
ID
2011000070 0
2011000074 2
2011000078 4
2011000118 6
Name: Income, dtype: int64

df = df.loc[df.groupby('ID')['Income'].apply(lambda x: x.abs().idxmax())]
print (df)
Index ID Income
0 0 2011000070 55019
2 2 2011000074 23879
4 4 2011000078 0
6 6 2011000118 -32500

替代方案:

df = df.loc[df['Income'].abs().groupby(df['ID']).idxmax()]
print (df)
Index ID Income
0 0 2011000070 55019
2 2 2011000074 23879
4 4 2011000078 0
6 6 2011000118 -32500

关于python - 如何比较 Pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018396/

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