You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中堆叠操作生成DataFrame汇总表?

用Pandas整合独立计算结果生成可转置的汇总表

我懂你的痛点——每次单独计算count、均值这些统计量,得到的都是零散的结果,想把它们拼成一张规整的汇总表还转个方向,之前用列表append的方式没成功对吧?其实问题出在没有给每个结果绑定明确的标识,下面给你两种简单靠谱的方法:

方法一:用字典收集结果(最直观)

先把每个统计项和对应的计算结果存在字典里,键就是统计项的名称,值就是Pandas计算出来的Series(比如df.count()返回的就是各列的统计值),最后把字典转成DataFrame再转置就行。

举个完整的例子:

import pandas as pd
import numpy as np

# 先准备示例数据(你替换成自己的DataFrame就行)
df = pd.DataFrame({
    '销售额': [1200, 1500, np.nan, 1800, 2000],
    '访客数': [300, 450, 500, np.nan, 600]
})

# 初始化字典存汇总结果
summary_dict = {}

# 逐个计算并存入字典,键是统计项名称
summary_dict['非缺失值数量'] = df.count()
summary_dict['均值'] = df.mean().round(2)
summary_dict['中位数'] = df.median()
summary_dict['最大值'] = df.max()

# 转成DataFrame并转置,得到行是统计项、列是原始字段的汇总表
summary_table = pd.DataFrame(summary_dict).T
print(summary_table)

运行后你会得到这样的结果(转置后的):

销售额    访客数
非缺失值数量    4.0    4.0
均值      1625.0  462.5
中位数    1650.0  475.0
最大值      2000.0  600.0

方法二:用带名称的Series列表拼接

如果习惯用列表,那别直接append数值,要append带name属性的Series,这样合并的时候每个Series的name就会变成汇总表的行名,最后转置就搞定了。

代码示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    '销售额': [1200, 1500, np.nan, 1800, 2000],
    '访客数': [300, 450, 500, np.nan, 600]
})

# 初始化列表存带名称的Series
summary_list = []

# 每个统计项生成带name的Series,加入列表
summary_list.append(pd.Series(df.count(), name='非缺失值数量'))
summary_list.append(pd.Series(df.mean().round(2), name='均值'))
summary_list.append(pd.Series(df.median(), name='中位数'))
summary_list.append(pd.Series(df.max(), name='最大值'))

# 按列合并Series,再转置
summary_table = pd.concat(summary_list, axis=1).T
print(summary_table)

为什么你之前的append没成功?

如果只是把df.count()或者单个数值直接append到空列表里,列表里的元素没有明确的“统计项名称”标识,合并的时候没法自动生成带行名的结构,自然得不到你想要的规整汇总表。上面两种方法的核心就是给每个统计结果绑定名称,这样转置后结构才清晰。

内容的提问来源于stack exchange,提问作者AntonioAgAl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:15:48