Pandas按国家聚合多年份列求和问题求助
解决按国家聚合多年份列的问题
针对你的需求,不用手动逐个写年份列名,用以下方法自动处理所有年份列:
假设你的数据结构:
Country列是国家名称(包含"Argentina")- 年份列都是
F+四位数字格式(比如F2009、F2010...F2018)
代码解决方案:
# 自动筛选所有年份列(匹配F开头+四位数字的格式) year_cols = df.columns[df.columns.str.match(r'F\d{4}')] # 按国家分组,对所有年份列求和,得到每个国家的总合 country_totals = df.groupby('Country')[year_cols].sum() # 提取Argentina的总合,转成单列DataFrame argentina_total_df = country_totals.loc[['Argentina']].T.rename(columns={'Argentina': 'Argentina_Total'})
代码说明:
str.match(r'F\d{4}'):用正则表达式精准匹配所有年份列,不管有多少个年份都能自动识别groupby('Country')[year_cols].sum():按国家分组后,对每个国家的所有年份列值求和loc[['Argentina']].T:把Argentina的行数据转成列,得到你要的仅包含Argentina总合的单列
如果你的年份列命名规则不同(比如不是F开头),可以调整正则表达式,比如年份列是Year2009这种,就改成r'Year\d{4}'。
内容的提问来源于stack exchange,提问作者Gexplode97
相关产品推荐
相关产品推荐

