熊猫数据框重组

时间:2019-04-20 09:36:22

标签: python pandas

我有一个像这样的数据框:

输入:

Adapter

所需的输出:

df = pd.DataFrame({'a': range(3), 'b': np.arange(3)-1})

我发现了一种(hacky)的方法:

尝试:

df_rearranged = pd.DataFrame({'data': [0,1,2,-1,0,1], 'origin': ['a', 'a', 'a', 'b', 'b', 'b']})

这可行,但是当我要合并更多列时,它很快变得不切实际。另外,我认为在pandas中应该有一个默认情况下可以执行此操作的函数,但是我缺少找到它的关键字。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

DataFrame.meltDataFrame.reindex的变更单列一起使用:

df1 = df.melt(var_name='origin', value_name='data').reindex(['data','origin'], axis=1)
print (df1)
   data origin
0     0      a
1     1      a
2     2      a
3    -1      b
4     0      b
5     1      b

使用带有numpy.ravelnumpy.repeat的DataFrame构造函数,显然可以提高性能:

df1 = pd.DataFrame({'data':df.values.ravel(), 'origin':np.repeat(df.columns, len(df))})
print (df1)
   data origin
0     0      a
1    -1      a
2     1      a
3     0      b
4     2      b
5     1      b