Python 如何使用for循环获取数据帧所有列中的总重复数?

Python 如何使用for循环获取数据帧所有列中的总重复数?,python,pandas,for-loop,Python,Pandas,For Loop,数据帧示例: 我试图找出一个数据帧的每列中存在多少重复记录。我想我可以简单地在下面这样的for循环中使用df.[column name].duplicated().sum()代码,但是duplicated()的语法错误无效 我的具体目标:有人能告诉我正确的语法是什么吗?但是,如果我这样做的方法完全不正确,那么除了for循环之外,还有什么方法可以完成同样的事情呢 我希望得到以下格式的输出: 列名称:列中重复的总数您可以按所有列分组并调用大小索引指示重复值: df.groupby(df.column

数据帧示例:

我试图找出一个数据帧的每列中存在多少重复记录。我想我可以简单地在下面这样的for循环中使用
df.[column name].duplicated().sum()
代码,但是duplicated()的语法错误无效

我的具体目标:有人能告诉我正确的语法是什么吗?但是,如果我这样做的方法完全不正确,那么除了for循环之外,还有什么方法可以完成同样的事情呢

我希望得到以下格式的输出:
列名称:列中重复的总数

您可以按所有列分组并调用大小索引指示重复值:

df.groupby(df.columns.tolist(),as_index=False).size()

one    three  two  
False  False  True     1
True   False  False    2
       True   True     1
dtype: int64

这里有一种方法:

import pandas as pd

df = pd.DataFrame({'Car': ['M', 'M', 'T', 'T', 'C']})

dupes = {}

for c in df:
    gb = df.groupby(c).size()
    dupes[c] = gb[gb > 1].sum()
dups
现在是:

>>> dupes
{'Car': 4}

只需将该逻辑应用于完整的数据帧。

另一个简单的解决方案将基于值计数来消除for循环。i、 e

df = pd.DataFrame({'Car': ['M', 'M', 'T', 'T', 'T', 'C'],'TV':['So','Su','So', 'So','T','So'],'Computer': ['D','Hp','Ap','Ac','S','H']})


x = df.apply(pd.Series.value_counts)
dupes_count = x[x>1].fillna(0).sum().to_dict()
输出:

{'Car': 5, 'Computer': 0, 'TV': 4}
您可以首先对所有列使用
apply
,然后将唯一(
1
)值替换为
0
sum

df = pd.DataFrame({'Car': list('MMTTCT'),
                  'Computer':list('abbbbc'),
                  'TV':list('aaabbb')})

print (df.apply(pd.value_counts))
   Car  Computer   TV
C  1.0       NaN  NaN
M  2.0       NaN  NaN
T  3.0       NaN  NaN
a  NaN       1.0  3.0
b  NaN       4.0  3.0
c  NaN       1.0  NaN

dupes = df.apply(pd.value_counts).replace(1,0).sum().astype(int).to_dict()
print (dupes)
 {'Car': 5, 'TV': 6, 'Computer': 4}

这对我有用

你所说的“每列重复记录”是什么意思?似乎你只是在询问给定列中每个值在该列中出现的次数。a列B列C列马自达索尼戴尔马自达苹果惠普丰田索尼东芝a列有2个重复项,B列有2个副本,C列有0个副本。请在问题中添加并格式化您的数据,而不是在注释中。输入后意识到。试图弄清楚这个网站是如何工作的。谢谢你的帮助。欢迎来到StackOverflow!如果你发布一个帖子,你会得到更好更快的帮助。特别地,考虑包括示例代码的数据,它代表了代码> DF,以及预期的输出。谢谢你的帮助。我试着从Excel复制/粘贴数据,它看起来和我的评论一模一样。之后,只需突出显示文本并点击
Ctrl
+
K
,将其格式化为类似于代码的格式。有关更多详细信息,请参阅。欢迎访问该站点。删除redunant函数几乎是类似的。
df = pd.DataFrame({'Car': list('MMTTCT'),
                  'Computer':list('abbbbc'),
                  'TV':list('aaabbb')})

print (df.apply(pd.value_counts))
   Car  Computer   TV
C  1.0       NaN  NaN
M  2.0       NaN  NaN
T  3.0       NaN  NaN
a  NaN       1.0  3.0
b  NaN       4.0  3.0
c  NaN       1.0  NaN

dupes = df.apply(pd.value_counts).replace(1,0).sum().astype(int).to_dict()
print (dupes)
 {'Car': 5, 'TV': 6, 'Computer': 4}
for column in df.columns:
    duplicate_column = df[column].duplicated().sum()
    print(column,': ', duplicate_column)