gpt4 book ai didi

python - 根据附加列优先过滤 Pandas 数据框中的重复项

转载 作者:行者123 更新时间:2023-11-28 20:22:06 25 4
gpt4 key购买 nike

我想从数据框中过滤 X 列中包含重复项的行。但是,如果 X 中的值有重复项,我想根据另一列 Y 的值优先考虑其中一个值。例如:

import pandas as pd
print pd.__version__
x = pd.DataFrame([
['best', 'a', 'x'],
['worst', 'b', 'y'],
['best', 'c', 'x'],
['worst','d', 'y'],
['best','d', 'y'],
['worst','d', 'y'],
['best','d', 'z'],
['best','d', 'z'],
], columns=['a', 'b', 'c'])
print x
x.drop_duplicates(cols='c', inplace=True)
print x

a b c
0 best a x
1 worst b y
2 best c x
3 worst d y
4 best d y
5 worst d y
6 best d z
7 best d z

a b c
0 best a x
1 worst b y
6 best d z

我想优先考虑列 a 等于最佳的重复项。哪个会给出结果:

       a  b  c
0 best a x
4 best d y
6 best d z

知道在 Pandas 中执行此操作的正确方法是什么吗?是否有比仅对行进行排序更通用的方法,以便删除除第一次出现的重复项之外的所有内容来执行您想要的操作?

最佳答案

我认为更直接的方法是首先对 DataFrame 进行排序,然后删除重复项,保留第一个条目。这非常稳健(这里,'a' 是一个具有两个值的字符串,但如果有更多的字符串值要排序,您可以应用一个函数从该字符串生成一个整数列)。

x = x.sort_values(['a']).drop_duplicates(cols='c')

关于python - 根据附加列优先过滤 Pandas 数据框中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005977/

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