在我使用 Python 处理的数据帧上调用 pandas.drop_duplicates() 后,我没有看到任何变化。
df = pd.read_excel('sample_data.xlsx', index_col=0)
df.drop_duplicates()
最佳答案
我发现您的代码存在两个问题:
- 您没有传递子集。默认情况下,在 panda 的 documentation 中、
drop_duplicates()
将考虑所有列并删除所有这些行中重复的行。如果您希望删除特定列或一组列的重复项,则应使用子集
。 - 您应该检查参数
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/