Python 转置列表中的多个数据帧
Python transposing multiple dataframes in a list
我有一些数据框与下面列出的 2 个数据框相似(在行数和列数方面)
0 email factor1_final factor2_final factor3_final
1 john@abc.com 85% 90% 50%
2 peter@abc.com 80% 60% 60%
3 shelby@abc.com 50% 70% 60%
4 jess@abc.com 60% 65% 50%
5 mark@abc.com 98% 50% 60%
0 email item1 item2
1 john@abc.com 80% 60%
2 peter@abc.com 60% 90%
3 shelby@abc.com 900% 40%
4 jess@abc.com 70% 35%
5 mark@abc.com 92% 50%
我想要的输出是有多个数据框,其中电子邮件作为列 header,因素或项目作为行
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com mark@abc.com
factor1 85% 80% 50% 60% 98%
factor2 90% 60% 70% 65% 50%
factor3 50% 60% 60% 50% 60%
我可以通过使用它单独转置每个数据帧来获得结果,但我想创建一个 for 循环,因为我有几个数据帧要转置
#Set index to email and transpose
df1 = df1.set_index('email').T
df1
写了类似这样的东西,但数据帧没有转置。想直接更改数据帧列表中的数据帧(沿着 inplace=True 的某处)。想知道我是否遗漏了什么,感谢任何形式的帮助,谢谢。
#Create a list of all the dataframes
df_list = [df1, df2, df3, df4, df5, df6]
for df in df_list:
df = df.set_index('email').T
df1
#tried this too but does not work
for i, df in enumerate(df_list):
df_list[i] = df_list[i].set_index('email').T
对我来说第二个解决方案有效,这里有一个小的替代方案:
df_list = [df1, df2]
for i, df in enumerate(df_list):
df_list[i] = df.set_index('email').T
print (df_list[0])
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com \
factor1_final 85% 80% 50% 60%
factor2_final 90% 60% 70% 65%
factor3_final 50% 60% 60% 50%
email mark@abc.com
factor1_final 98%
factor2_final 50%
factor3_final 60%
print (df_list[1])
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com mark@abc.com
item1 80% 60% 900% 70% 92%
item2 60% 90% 40% 35% 50%
创建新数据帧列表的解决方案:
dfs = [df.set_index('email').T for df in df_list]
我有一些数据框与下面列出的 2 个数据框相似(在行数和列数方面)
0 email factor1_final factor2_final factor3_final
1 john@abc.com 85% 90% 50%
2 peter@abc.com 80% 60% 60%
3 shelby@abc.com 50% 70% 60%
4 jess@abc.com 60% 65% 50%
5 mark@abc.com 98% 50% 60%
0 email item1 item2
1 john@abc.com 80% 60%
2 peter@abc.com 60% 90%
3 shelby@abc.com 900% 40%
4 jess@abc.com 70% 35%
5 mark@abc.com 92% 50%
我想要的输出是有多个数据框,其中电子邮件作为列 header,因素或项目作为行
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com mark@abc.com
factor1 85% 80% 50% 60% 98%
factor2 90% 60% 70% 65% 50%
factor3 50% 60% 60% 50% 60%
我可以通过使用它单独转置每个数据帧来获得结果,但我想创建一个 for 循环,因为我有几个数据帧要转置
#Set index to email and transpose
df1 = df1.set_index('email').T
df1
写了类似这样的东西,但数据帧没有转置。想直接更改数据帧列表中的数据帧(沿着 inplace=True 的某处)。想知道我是否遗漏了什么,感谢任何形式的帮助,谢谢。
#Create a list of all the dataframes
df_list = [df1, df2, df3, df4, df5, df6]
for df in df_list:
df = df.set_index('email').T
df1
#tried this too but does not work
for i, df in enumerate(df_list):
df_list[i] = df_list[i].set_index('email').T
对我来说第二个解决方案有效,这里有一个小的替代方案:
df_list = [df1, df2]
for i, df in enumerate(df_list):
df_list[i] = df.set_index('email').T
print (df_list[0])
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com \
factor1_final 85% 80% 50% 60%
factor2_final 90% 60% 70% 65%
factor3_final 50% 60% 60% 50%
email mark@abc.com
factor1_final 98%
factor2_final 50%
factor3_final 60%
print (df_list[1])
email john@abc.com peter@abc.com shelby@abc.com jess@abc.com mark@abc.com
item1 80% 60% 900% 70% 92%
item2 60% 90% 40% 35% 50%
创建新数据帧列表的解决方案:
dfs = [df.set_index('email').T for df in df_list]