Python 将数据帧从宽转为长
我已经查看了很多SO帖子,但是在下面找不到解决这个问题的方法 我有这个数据框: 你能告诉我如何把它改成这种格式吗?提前谢谢Python 将数据帧从宽转为长,python,pandas,dataframe,Python,Pandas,Dataframe,我已经查看了很多SO帖子,但是在下面找不到解决这个问题的方法 我有这个数据框: 你能告诉我如何把它改成这种格式吗?提前谢谢 让我们尝试以下方法: import pandas as pd import numpy as np df = pd.DataFrame({'Var1':[*'xyz'], 'Var2':['a']*3, 'Var1a':[1,5,9], 'Var2a':[2,6,
让我们尝试以下方法:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Var1':[*'xyz'],
'Var2':['a']*3,
'Var1a':[1,5,9],
'Var2a':[2,6,10],
'Var3':[3,7,11],
'Var4':[4,8,12]})
df_out = df.set_index(['Var2', 'Var1']).stack().unstack(1).droplevel(1)
df_out = df_out.rename_axis(index=None, columns=None)
df_out
输出:
x y z
a 1 5 9
a 2 6 10
a 3 7 11
a 4 8 12
问题:重复的列名是您问题的一部分,还是我们可以重命名这些列以使其具有唯一的名称?嗨@ScottBoston,我假设您提到的是column
Var2
?可以更改为不同的名称;我只是做了同样的例子。看到我下面的解决方案,我把第二个,Var1和Var2重命名为Var1a和Var2a。太棒了!快到了。如何删除行/标题Var2以使最终数据帧仅包含1个标题行(Var1、x、y、z)。也就是说,Var1列将包含值a
?@Nemo,这些只是轴名称。