python pandas循环融化或旋转多个df

问题描述

我有几个结构相同的df。我想创建一个循环以融化它们或创建数据透视表。

我尝试了以下操作,但不起作用


my_df = [df1,df2,df3]

for df in my_df:
   df = pd.melt(df,id_vars=['A','B','C'],value_name = 'my_value')

for df in my_df:
   df = pd.pivot_table(df,values = 'my_value',index = ['A',columns = ['my_column'])

任何帮助都会很棒。预先谢谢你

解决方法

您需要将输出分配给DataFrame的新列表:

out = []
for df in my_df:
   df = pd.melt(df,id_vars=['A','B','C'],value_name = 'my_value')
   out.append(df)

列表理解中的相同想法:

out = [pd.melt(df,value_name = 'my_value') for df in my_df]

如果需要忽略列表中的原始值:

for i,df in enumerate(my_df):
   df = pd.melt(df,value_name = 'my_value')
   my_df[i] = df

print (my_df)

如果需要覆盖变量df1,df2,df3

df1,df3 = [pd.melt(df,value_name = 'my_value') for df in my_df]