求助:使用Python Pandas合并重复行并统计报纸数量
解决方法
可以用Pandas的groupby结合agg方法实现需求,具体步骤如下:
步骤1:导入依赖并定义原始数据
import pandas as pd 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'], })
步骤2:分组聚合处理
以ZIP Code和City Name作为分组依据(确保同一城市的行被归为一组),对Newspaper列执行两个操作:
- 用逗号拼接组内所有报纸名称
- 统计组内报纸的数量
代码实现:
df_wanted = df.groupby(['ZIP Code', 'City Name'], as_index=False).agg( Newspaper=('Newspaper', ', '.join), Number_of_Newspapers=('Newspaper', 'count') )
步骤3:查看结果
运行后得到的df_wanted与需求格式一致:
ZIP Code City Name Newspaper Number_of_Newspapers 0 1234 City A City A News, City A Newspaper 2 1 5678 City B News for City B 1 2 9101 City C C News 1
注:你提供的目标DataFrame里City C的Number of Newspapers写为0,这应该是笔误,原数据中它对应1条报纸记录,实际统计结果为1。
内容的提问来源于stack exchange,提问作者Bantha Hunter
相关产品推荐
相关产品推荐

