gpt4 book ai didi

python - 在 Pandas 中折叠列和索引

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:57 24 4
gpt4 key购买 nike

我正在寻找使用 python3 对 pandas DataFrame 执行特定操作。我想将一个 NxK DataFrame 折叠成一个 NKx3 DataFrame,它由三列组成:条目,列和来自原始 DataFrame 的索引。这是一个例子:

          'a' 'b' 'c'
'e' 1 2 3
'f' 4 5 6

期望的输出:

         0   1   2
0 1 'a' 'e'
1 4 'a' 'f'
2 2 'b' 'e'
3 5 'b' 'f'
4 3 'c' 'e'
5 6 'c' 'f'

我正在寻找一种优雅的 pythonic 方式来实现这一目标,但由于我正在处理非常大的数据帧,因此最优先考虑的是效率。

最佳答案

Pandas

使用unstack + reset_index

df.unstack().reset_index()

level_0 level_1 0
0 a e 1
1 a f 4
2 b e 2
3 b f 5
4 c e 3
5 c f 6

完全复制你所拥有的

df.unstack().rename_axis([1, 2]).reset_index().sort_index(1)

0 1 2
0 1 a e
1 4 a f
2 2 b e
3 5 b f
4 3 c e
5 6 c f

numpy

v = df.values
pd.DataFrame({
0: v.ravel('F'),
1: df.columns.values.repeat(v.shape[0]),
2: np.tile(df.index.values, v.shape[1])
})

0 1 2
0 1 a e
1 4 a f
2 2 b e
3 5 b f
4 3 c e
5 6 c f

关于python - 在 Pandas 中折叠列和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41947609/

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