Pandas 去掉重复项并统计个数

本文探讨了在Pandas中如何处理重复数据,除了传统的drop_duplicates()方法外,还介绍了使用sorted进行去重,并结合value_counts()进行计数。通过示例展示了在爬虫数据中,如何处理顺序不同的但实质相同的行,如'America England'和'England America'视为同一国家的合作。最后,展示了将value_counts()结果转化为DataFrame并设置列名的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感觉还是另外开一篇文章写关于去重,这里说的并不是使用"drop_duplicates()"的用法哟。

这是因为drop_duplicates() 只会一刀杀,对于一些超过一个data的行,就没法做到保留其中一个的功能了。

以下开始进入正题。

>>>country_counts
America 10
America England 1
England America 2
Canada America Hongkong 1
Korea 3

如同上图,我们可以看到“America England” 与 "England America" 只是顺序改变了。在爬虫豆瓣电影的过程中,其实这两个数据都是等同的,都是等于合作电影的国家名字。

当某些情况下,我们只需要统计他们的共同次数的时候,那怎么做呢?

最终的效果应该如同以下那样。

America 10
America England 3
Canada America Hongkong 1
Korea 3

那么就是运用sorted来去重了。

使用的方法如下:

data = [
        ['America',10],
        ['America England', 1],
        ['England America', 2],
        ['Canada America Hongkong',1],
        ['Korea', 3]
       ]

df = pd.DataFrame(data,columns=['a','b'])
df['a'] = df['a'].apply(lambda x:str(sorted(x.split(' '))))

print(df.groupby('a').sum())

 那么如果你这个df是之前经过数据处理了的,我们怎么把value_counts()的结果转换为Dataframe并设置列名呢?

这种时候就可以利用 rename_axis 跟 reset_index来达到这个目的了:

country_df = country_counts.rename_axis('country').reset_index(name = 'counts')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值