对列中的重复项进行计数并将其添加到新列中

2024-10-04 07:36:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计数重复项,然后删除.cupplicates以获得没有重复项的数据帧,但有额外的列,其中的数字表示有多少重复项

来自

       id  letter
0  665639  AAAAAA
1  665639  AAAAAA
2  665639  AAAAAA
3  665639  AAAAAA
5  702090  BBBBBB
6  702092  CCCCCC

       id  letter   count
0  665639  AAAAAA     4
1  665639  AAAAAA     4
2  665639  AAAAAA     4
3  665639  AAAAAA     4
5  702090  BBBBBB     1
6  702092  CCCCCC     1

和之后

drop.duplicates(子集=['id'],inplace=True)

       id  letter   count
0  665639  AAAAAA     4
5  702090  BBBBBB     1
6  702092  CCCCCC     1

我的做法是:

cols = ['id','letter']
df['count'] = df.groupby(cols)['id'].transform('size')

但是当我这么做的时候,我得到的数据帧只有1个


Tags: 数据iddfcount数字子集drop计数
2条回答
transform operator recombines data after aggregation. Hence it returns all rows. Hence for all rows try:
df['count']=df.groupby('id')['letter'].transform('count')#all rows ; 

在groupby中直接使用方法总结了它应用于的列。由于groupby返回一个序列,.to_frame()将其转换为数据帧。如果给定名称,则结果序列将因此重命名。要获得总结结果,请尝试:

df.groupby('id')['letter'].value_counts().to_frame('count')#summarised

我将首先创建重复的计数

df['Count'] = 1
df.groupby(['id','letter']).Count.count().reset_index()

然后扔掉复制品

df.drop_duplicates()

相关问题 更多 >