Pandas 去掉重复项并统计个数

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

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

  • 复习如何运用 value_counts() 进行计数的请查看: https://mp.csdn.net/postedit/85029009

以下开始进入正题。

>>>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')

 

你可能感兴趣的:(python数据分析,pandas)