问题描述
我有几个结构相同的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]