gpt4 book ai didi

python - 从 Pandas DataFrame 中选择一列中具有相同值但另一列中具有不同值的行

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

假设我有下面的 pandas DataFrame:

   A      B     C   D
1 foo one 0 0
2 foo one 2 4
3 foo two 4 8
4 cat one 8 4
5 bar four 6 12
6 bar three 7 14
7 bar four 7 14

我想选择所有在 A 中具有相同值但在 B 中具有不同值的行。所以我希望我的代码输出为:

   A      B    C   D
1 foo one 0 0
3 foo two 4 8
5 bar three 7 14
6 bar four 7 14

最有效的方法是什么?我有大约 11,000 行,列值变化很大,但这种情况经常出现。在我的数据集中,如果 A 列中的元素相等,则相应的 B 列值也应该相等,但是由于标记错误,情况并非如此,我想解决这个问题,我这样做是不切实际的一。

最佳答案

你可以试试groupby() + filter + drop_duplicates():

>>> df.groupby('A').filter(lambda g: len(g) > 1).drop_duplicates(subset=['A', 'B'], keep="first")
A B C D
0 foo one 0 0
2 foo two 4 8
4 bar four 6 12
5 bar three 7 14

或者,如果您想在 AB 列的子集之间删除重复项,则可以在下面使用,但该行将包含 cat 还有。

>>> df.drop_duplicates(subset=['A', 'B'], keep="first")
A B C D
0 foo one 0 0
2 foo two 4 8
3 cat one 8 4
4 bar four 6 12
5 bar three 7 14

关于python - 从 Pandas DataFrame 中选择一列中具有相同值但另一列中具有不同值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54043313/

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