gpt4 book ai didi

python - Pandas 数据框的高效展平

转载 作者:太空狗 更新时间:2023-10-30 01:47:40 27 4
gpt4 key购买 nike

我有一个 Pandas 数据框。它看起来像这样:

pd.DataFrame(data=np.arange(1,10).reshape(3,3), index=['A', 'B', 'C'], columns=['A', 'B', 'C'])

但有 100 行和 100 列。

我想把它压平,让它看起来像这样:

pd.DataFrame({'row' : ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], 'col' : ['A', 'B', 'C']*3, 'val' : np.arange(1,10)})

执行此操作最有效的方法是什么?

谢谢,

jack

最佳答案

选项 1
不能 100% 确定效率,但最简单的方法是使用 df.melt

df.rename_axis('row')\
.reset_index()\
.melt('row', value_name='val', var_name='col')\
.sort_values(['row', 'col'])

row col val
0 A A 1
3 A B 2
6 A C 3
1 B A 4
4 B B 5
7 B C 6
2 C A 7
5 C B 8
8 C C 9

选项 2
stack 的另一个简单选项 -

v = df.stack().reset_index()
v.columns=['row', 'col', 'val']
v

或者,

df.stack().rename_axis(['row', 'col']).reset_index(name='val')

  row col  val
0 A A 1
1 A B 2
2 A C 3
3 B A 4
4 B B 5
5 B C 6
6 C A 7
7 C B 8
8 C C 9

关于python - Pandas 数据框的高效展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com