gpt4 book ai didi

python - pandas drop_duplicates() "keep"参数给出了截然不同的答案 - 它是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 07:19:22 26 4
gpt4 key购买 nike

我有一个参加比赛的奥运会运动员的 CSV 数据集。

特征是:id、姓名、性别、年龄、游戏、年份、运动

我需要找到:

What was the percentage of male basketball players among all the maleparticipants of the 2012 Olympics? Round the answer to the firstdecimal.

一名运动员可以参加多种形式的比赛,因此存在重复。

我使用此代码查询没有“keep”参数:

    males_2012 = data[   (data['Sex']=='M') & (data['Year']==2012)].drop_duplicates(subset=['ID',],inplace=False)
len(males_2012) # gives 5863

但是,如果我使用“keep=False”查询,它会提供更小的数据集:

males_2012 = data[   (data['Sex']=='M') & (data['Year']==2012) ].drop_duplicates(subset=['ID',], 
keep=False,inplace=False)
len(males_2012) # 5020

官方drop重复参数“keep”的解释:

drop_duplicates() official docs

keep : {‘first’, ‘last’, False}, default ‘first’ first : Drop

duplicates except for the first occurrence. last : Drop duplicates

except for the last occurrence. False : Drop all duplicates.

我找到了正确的答案,但是我仍然不明白为什么它根据“keep=False”参数给出了截然不同的答案。

最佳答案

keep 定义您要保留的重复值。

1) 首先指定保留第一个重复值并删除其余值。

2) Last 指定保留最后一个重复值并删除其余值。

3) False 指定删除所有重复项。

考虑这个例子:

df = pd.DataFrame({'A': [1,1,1,1]})

print(df.drop_duplicates(keep='first'))
print(df.drop_duplicates(keep='last'))
print(df.drop_duplicates(keep=False))

输出是:

   A
0 1
A
3 1
Empty DataFrame
Columns: [A]
Index: []

我们可以看到,在第一个 df 中,保留的元素位于索引 0 处,因此它是第一个元素。第二个 df 的索引为 3,因此它是最后一个元素。最后一个 df 没有数据,因为整个列都是重复的,所以全部都被删除。

关于python - pandas drop_duplicates() "keep"参数给出了截然不同的答案 - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777578/

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