如何在Pandas分组DataFrame添加总计行时跳过第一列?
解决方法
你可以通过仅针对byCountry列赋值总计值,并手动设置Country列的总计行为空(或自定义文本)来实现需求,原代码的问题是把总和值广播到了整行,导致Country列也被填充了数值。
修改后的完整代码
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('manufacturers.csv') # 分组统计国家数量 gkk = df.groupby(['Country'])['Country'].count().reset_index(name='byCountry') # 添加总计行:仅给byCountry列赋值总和,Country列设为空字符串 total_row = pd.DataFrame({ 'Country': [''], # 这里可以改成'总计'之类的自定义文本 'byCountry': [gkk['byCountry'].sum()] }, index=['Total by Country']) # 合并原数据和总计行 gkk = pd.concat([gkk, total_row]) print(gkk)
另一种更简洁的写法(直接用loc赋值)
如果你不想额外创建DataFrame,也可以直接通过loc指定列赋值:
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('manufacturers.csv') gkk = df.groupby(['Country'])['Country'].count().reset_index(name='byCountry') # 设置总计行的byCountry值 gkk.loc['Total by Country', 'byCountry'] = gkk['byCountry'].sum() # 将Country列的总计行设为空 gkk.loc['Total by Country', 'Country'] = '' print(gkk)
这样输出时,Country列的总计行是空的,只有byCountry列显示所有国家的总数,符合你的要求。
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

