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

标签 python pandas

在我使用 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/

相关文章:

python - 用python从列表中制作字典

python - 将包含值列表的字典转换为数据框

python - 描述时间序列 Pandas 中的差距

python - 比较两个数据框并根据查找表删除列

python - 在 __func__ 上设置属性

python - 当我使用第三个变量定义颜色制作 python 散点颜色图时没有颜色

python - 如何将 <meta http-equiv ="Content-Security-Policy"content ="upgrade-insecure-requests"> 添加到 Flask-bootstrap 模板

python mysqldb 不工作 - 没有错误消息

python-3.x - 相当于 pandas.shift() 函数的 numpy 数组?

python - Pandas 错误 - 为什么我的对象是混合类型?