gpt4 book ai didi

python - 用于 pandas 数据帧时无法看到 drop_duplicates 的影响

转载 作者:行者123 更新时间:2023-12-01 06:42:11 24 4
gpt4 key购买 nike

在我使用 Python 处理的数据帧上调用 pandas.drop_duplicates() 后,我没有看到任何变化。

df = pd.read_excel('sample_data.xlsx', index_col=0)
df.drop_duplicates()

This is the data I'm working on

最佳答案

我发现您的代码存在两个问题:

  1. 您没有传递子集。默认情况下,在 panda 的 documentation 中、drop_duplicates() 将考虑所有列并删除所有这些行中重复的行。如果您希望删除特定列或一组列的重复项,则应使用子集
  2. 您应该检查参数 inplace 的效果,因此 df = df.drop_duplicates(['col_1','col_2'])

考虑到这两项之后,您应该会注意到其中的差异。

这是一个例子:

import pandas as pd
import numpy as np
df = pd.DataFrame({'col_1':[1,2,3,3,1],'col_2':[1,1,3,3,1],'col_3':['a','b','c','d','a']})
print(df)

col_1 col_2 col_3
0 1 1 a
1 2 1 b
2 3 3 c
3 3 3 d
4 1 1 a

如果我们使用不带任何子集的 drop_duplicates() ,那么它将删除所有列中全部重复的行。这是第 0 行和第 4 行,因为它们的所有 3 列都是重复的。由于默认值为 keep='first',因此您将保留第 0 行并删除第 4 行。

如果我们希望使用子集,例如 drop_duplicates(['col_1','col_2']) 那么我们可以预期有两组重复行 0 和 4(因为它们的 col_1 值和 col_2 相同)以及第 2 行和第 3 行,因为您没有考虑 col_3。与第一种情况类似,您将删除 4 并保留 0,删除第 3 行并保留 2。这将是第一种情况的输出:

df.drop_duplicates(inplace=True)
print(df)
col_1 col_2 col_3
0 1 1 a
1 2 1 b
2 3 3 c
3 3 3 d

这是第二种情况:

df.drop_duplicates(['col_1','col_2'],inplace=True)
print(df)
col_1 col_2 col_3
0 1 1 a
1 2 1 b
2 3 3 c

关于python - 用于 pandas 数据帧时无法看到 drop_duplicates 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59398266/

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