如何为多个DataFrame批量创建独立透视表?
解决方法
先修正你代码里的问题,再实现每个DataFrame生成独立透视表的需求:
- 修正分位数函数的错误:你的
eightieth函数误用了0.90分位数,和ninetieth重复,需要改成0.80 - 循环创建透视表时,要把当前遍历的
df传给pd.pivot_table的第一个参数,而非空列表 - 要保存每个生成的透视表,避免循环结束后无法获取结果
修改后的完整代码:
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
相关产品推荐
相关产品推荐

