如何计算DataFrame所有列的平均值并添加为新行?
问题分析与解决方法
原代码报错的核心原因:
df.mean是方法对象,未加括号调用,无法生成实际均值结果- 字典语法错误,不能直接将
df.mean作为键值对的值,需先计算均值再构造合法的字典/Series
正确实现方式(推荐用pd.concat,append已被Pandas弃用)
假设你的DataFrame以user_id为索引(对应表格第一列),操作步骤如下:
import pandas as pd # 构造对应示例DataFrame data = { 'A': [1, 2, 2, 3], 'B': [0, 1, 3, 2], 'C': [0, 0, 1, 0], 'D': [1, 2, 3, 4] } df = pd.DataFrame(data, index=['1', '2', '3', '4']) df.index.name = 'user_id' # 计算各列均值并构造均值行的DataFrame mean_row = pd.DataFrame(df.mean()).T mean_row.index = ['Average'] mean_row.index.name = 'user_id' # 合并原DataFrame与均值行 df_with_avg = pd.concat([df, mean_row])
更简洁的写法(直接修改原DataFrame)
若允许直接修改原数据,可直接给新索引赋值:
df.loc['Average'] = df.mean()
最终生成的DataFrame与你期望的格式一致:
| user_id | A | B | C | D |
|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 1 |
| 2 | 2 | 1 | 0 | 2 |
| 3 | 2 | 3 | 1 | 3 |
| 4 | 3 | 2 | 0 | 4 |
| Average | 2 | 1.5 | 0.25 | 2.5 |
内容的提问来源于stack exchange,提问作者Haseeb Sultan
相关产品推荐
相关产品推荐

