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

如何为多个DataFrame批量创建独立透视表?

解决方法

先修正你代码里的问题,再实现每个DataFrame生成独立透视表的需求:

  1. 修正分位数函数的错误:你的eightieth函数误用了0.90分位数,和ninetieth重复,需要改成0.80
  2. 循环创建透视表时,要把当前遍历的df传给pd.pivot_table的第一个参数,而非空列表
  3. 要保存每个生成的透视表,避免循环结束后无法获取结果

修改后的完整代码:

import pandas as pd

df_list = [df1, df2, df3, df4]

def fiftieth(x):
    return x.median()
def sixtieth(x):
    return x.quantile(0.60)
def seventieth(x):
    return x.quantile(0.70)
def seventy_fifth(x):
    return x.quantile(0.75)
def eightieth(x):
    return x.quantile(0.80)  # 修正为0.80,避免和ninetieth重复
def ninetieth(x):
    return x.quantile(0.90)       

# 存储所有独立的透视表
pivot_tables = []

for df in df_list: 
    # 传入当前循环的df,生成对应透视表
    current_pivot = pd.pivot_table(df, values='Score', index='Measure_ID',
                           aggfunc=[fiftieth, sixtieth, seventieth,
                                    seventy_fifth, eightieth, ninetieth],
                           dropna=True)
    pivot_tables.append(current_pivot)

# 后续可通过索引调用单个透视表,比如pivot_tables[0]对应df1的结果,pivot_tables[1]对应df2的结果

额外选项:单独命名每个透视表

如果需要给每个透视表单独命名(比如pivot1、pivot2),可以不用列表存储,直接循环赋值:

for idx, df in enumerate(df_list):
    locals()[f'pivot{idx+1}'] = pd.pivot_table(df, values='Score', index='Measure_ID',
                           aggfunc=[fiftieth, sixtieth, seventieth,
                                    seventy_fifth, eightieth, ninetieth],
                           dropna=True)
# 此时会生成pivot1到pivot4四个独立变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:15:54