假设我有一个数据框,可以用以下形式表示:
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这样的方法。
答案 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