Skip to main content
 首页 » 编程设计

python之如何在 for 循环中堆叠多个 pandas DataFrame

2025年05月04日20kenshinobiy

因为我有多个 pandas DataFrame,所以我想使用 for 循环对所有这些 DataFrame 运行 .stack() 方法。标记列和设置索引等其他方法有效,但由于某种原因,堆栈方法不会导致任何更改:

for df in [df1, df2, df3, df4]: 
    df = df.stack() 

结果:

print(df1.head()) 
 
        Q1 1990  Q2 1990  Q3 1990   ...     Q2 2018  Q3 2018  Q4 2018 
EC                                  ...                               
C13840      NaN      NaN      NaN   ...         NaN      NaN      NaN 
C28525      NaN      NaN      NaN   ...     8480.00  8125.00      NaN 
C06541      NaN      NaN      NaN   ...         NaN      NaN      NaN 
C51345      NaN      NaN      NaN   ...       13.75    15.00      NaN 
C44265      NaN      NaN      NaN   ...      141.90   129.54   133.44 

预期结果:

print(df1.head(10)) 
 
EC              
C13840  Q1 1990   NaN 
        Q2 1990   NaN 
        Q3 1990   NaN 
        Q4 1990   NaN 
        Q1 1991   NaN 
        Q2 1991   NaN 
        Q3 1991   NaN 
        Q4 1991   NaN 
        Q1 1992   NaN 
        Q2 1992   NaN 
        ... 
        ... 

谢谢。

请您参考如下方法:

将输出分配给新列表 od Series,因为 stack 无法就地工作:

dfs = [df.stack() for df in [df1, df2, df3, df4]] 

然后如果需要分配回来:

df1, df2, df3, df4 = dfs 

或者联合起来:

df = pd.concat(dfs, axis=1)