首页 > 解决方案 > 删除重复值并计算值

问题描述

我提取了一个国家列表,并尝试处理数据以生成报告。我用“ value_counts()”来计算国家的元素。结果如下所示。

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

但是,有些重复项我不能使用“ drop_duplicate”来减少它们。例如,“America England”和“England America”这两个值相同,但出现的顺序不同。我只想保留其中一个并将另一列中的值相加。

就像下面这样,把“England America”改成“America England”,把它们都加起来(2+1=3):

America 10
America England 3
Canada America Hongkong 1
Korea 3

提前致谢。

标签: pythonpandas

解决方案


您可以将它们拆分为空格,然后对列表进行排序。然后我将其转换 list为 astr以便可以在 groupby 中使用。

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

输出

                                    b
a                                    
['America', 'Canada', 'Hongkong']   1
['America', 'England']              3
['America']                        10
['Korea']                           3

推荐阅读