从重复行中提取字符串,删除重复项,给出字符串计数[重复]

问题描述 投票:0回答:1

我对 Python/panda 比较陌生。这是我的问题:我的 df 看起来像这样:

df = pd.DataFrame({
    'ZIP Code': ['1234','1234', '5678', '9101'],
    'City Name': ['City A', 'City A', 'City B', 'City C'],
    'Newspaper': ['City A News', 'City A Newspaper', 'News for City B', 'C News'],
})

如您所见,对于 A 市,有两份报纸,但它们列在不同的两行中。在我真实的 df 中,我有多个城市案例,在单独的行中列出,除了列出的报纸之外,彼此完全相同。

所以我想创建一个看起来像这样的 df:

df_wanted = pd.DataFrame({
'ZIP Code': ['1234', '5678', '9101'],
'City Name': ['City A', 'City B', 'City C'],
'Newspaper': ['City A News, City A Newspaper', 'News for City B', 'C News'],
'Number of Newspapers': [2, 1, 0]

})

所以基本上,我想删除重复的行并将不重复报纸的字符串添加到城市的第一个条目中。

此外,我想创建一个统计报纸数量的列,以便我可以使用这些数字进行进一步分析。

我希望你能帮助我解决我的问题!预先感谢:)

到目前为止,我还没有找到解决我的问题的方法。

pandas dataframe row drop-duplicates
1个回答
0
投票

您可以使用名为 agg 的 groupby:

df.groupby('ZIP Code').agg(**{
    'City Name': ('City Name', 'first'),
    'Newspaper': ('Newspaper', ', '.join),
    'No. Newspaper': ('Newspaper', 'size')
})

输出:

         City Name                      Newspaper  No. Newspaper
ZIP Code                                                        
1234        City A  City A News, City A Newspaper              2
5678        City B                News for City B              1
9101        City C                         C News              1
© www.soinside.com 2019 - 2024. All rights reserved.