高效扁平化pandas数据框

我有一个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)})

最有效的方法是什么?

谢谢,

插口

回答:

无法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


另一个简单的选项 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

以上是 高效扁平化pandas数据框 的全部内容, 来源链接: utcz.com/qa/405822.html

回到顶部