重新排列数据帧结构

时间:2017-04-26 10:11:13

标签: python pandas

我得到一个数据框

df
   A  B
0  1  4
1  2  5
2  3  6

为了进一步处理,重新调整df会更方便 如下:

 letters numbers
0  A     1
1  A     2
2  A     3
3  B     4
4  B     5
5  B     6

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

unstack使用reset_index

df = df.unstack().reset_index(level=1, drop=True).reset_index()
df.columns = ['letters','numbers']
print (df)
  letters  numbers
0       A        1
1       A        2
2       A        3
3       B        4
4       B        5
5       B        6

numpy.concatenate + numpy.repeat + DataFrame

a = np.concatenate(df.values)
b = np.repeat(df.columns,len(df.index))
df = pd.DataFrame({'letters':b, 'numbers':a})
print (df)
  letters  numbers
0       A        1
1       A        4
2       A        2
3       B        5
4       B        3
5       B        6

答案 1 :(得分:1)

melt可能最简单:

In [36]: pd.melt(df, var_name="letters", value_name="numbers")
Out[36]: 
  letters  numbers
0       A        1
1       A        2
2       A        3
3       B        4
4       B        5
5       B        6