Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧从宽转为长_Python_Pandas_Dataframe - Fatal编程技术网

Python 将数据帧从宽转为长

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,

我已经查看了很多SO帖子,但是在下面找不到解决这个问题的方法

我有这个数据框:

你能告诉我如何把它改成这种格式吗?提前谢谢


让我们尝试以下方法:

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,这些只是轴名称。