gpt4 book ai didi

python - 在某些条件下从数据框中删除重复项

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:47 25 4
gpt4 key购买 nike

我有以下数据框

my_id  field_1   field_2   field_3 ...  field_100
1 :
1 :
1
1
2
2
3
3
3

我想为每个 my_id 只保留一行,使用具有非空、最小 field_1 的记录。除了遍历整个数据帧之外,是否有一种优雅的方法来解决这个问题?谢谢!

最佳答案

IIUC:

df.sort_values(['myid','field_1']).drop_duplicates(['my_id'])

这是有效的,因为 sort_values 默认将空值放在最后,而 drop_duplicates 保留第一个。因此,如果您按 field_1 对其进行排序,那么第一个值将是最低的非空值。

示例:

>>> df
myid field_1 field_2
0 1 NaN 0.832445
1 1 3.0 0.742906
2 1 2.0 0.392163
3 2 2.0 0.089412
4 2 NaN 0.815754
5 2 1.0 0.615426

>>> df.sort_values(['myid','field_1']).drop_duplicates(['myid'])
myid field_1 field_2
2 1 2.0 0.392163
5 2 1.0 0.615426

另一种方法是排序,然后使用 groupby 并选择 first (但我认为这样效率较低):

>>> df.sort_values('field_1').groupby('myid', as_index=False).first()
myid field_1 field_2
0 1 2.0 0.392163
1 2 1.0 0.615426

关于python - 在某些条件下从数据框中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266809/

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