如何将Python Pandas统计结果添加至现有DataFrame的新列?
解决方案
你可以通过**映射(map)或者合并(merge)**的方式将国家占比添加到原DataFrame的新列中,这里推荐用更简洁的map方法:
完整代码示例
import pandas as pd # 读取CSV文件 df = pd.read_csv('filename.csv') # 计算每个国家的占比,生成带列名的Series country_share = 100 * df['Country'].value_counts(normalize=True).rename('Country_Share') # 将占比映射到原DataFrame的新列 df['Country_Share'] = df['Country'].map(country_share) # 查看结果 print(df.head())
步骤说明
- 计算占比:
value_counts(normalize=True)返回每个国家的占比(小数形式),乘以100转为百分比,rename给结果指定列名,方便后续映射。 - 映射添加列:
df['Country'].map(country_share)会遍历原DataFrame的每一行,将Country列的国家名称匹配到country_share中对应的占比,自动填充到新列Country_Share里。
替代方案(合并法)
如果你更习惯用合并操作,也可以这样写:
# 计算占比并转为带国家列的DataFrame share_df = 100 * df['Country'].value_counts(normalize=True).reset_index(name='Country_Share') share_df = share_df.rename(columns={'index': 'Country'}) # 合并到原DataFrame df = df.merge(share_df, on='Country', how='left')
内容的提问来源于stack exchange,提问作者Dappergemini
相关产品推荐
相关产品推荐

