熊猫通过每行具有列名称和索引的单元格值来重塑数据框

时间:2019-05-19 14:51:14

标签: python pandas

假设我有一个数据框,可以用以下形式表示:

pd.DataFrame(columns=['X', 'Y'],index=['A','B'])

    X   Y
A   1   2
B   3   4   

然后我想对每个单元格应用函数,以获取一个数据帧,该数据帧的每一行都有一个具有列名和索引的单元格值,例如:

   Col1  Col2  Value
1   X     A     1
2   Y     A     2
3   X     B     3
4   Y     B     4

我知道我可以循环获取结果,但是我希望有更好的Pandas这样的方法。

1 个答案:

答案 0 :(得分:1)

使用DataFrame.stack并将MultiIndex转换为列Series.reset_index,对于新列名称,请添加Series.rename_axis并按子集更改列的顺序:

df = df.stack().rename_axis(('Col2','Col1')).reset_index(name='Value')[['Col1','Col2','Value']]
print (df)
  Col1 Col2  Value
0    X    A      1
1    Y    A      2
2    X    B      3
3    Y    B      4