gpt4 book ai didi

python - Pandas:使用现有索引和列标题创建 MultiIndex/groupby

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:32 27 4
gpt4 key购买 nike

我正在尝试将二维数据框转换为(或多或少)一维数据框,其中现有列用作第一级索引,列标题用作二级指标。

我一直在尝试 .melt().groupby().transpose().MultiIndex( ).pivot()... 都没有任何运气 - 我认为主要是因为它们需要以某种我无法理解的方式组合。

设置:

import pandas as pd
from io import StringIO

csv = StringIO(u'''
AXIS A B C D
X 100 101 102 103
Y 200 201 202 203
Z 300 301 302 303
''')

df = pd.read_csv(csv, delim_whitespace = True)

期望的输出:

                Num
One Two
X A 100
X B 101
X C 102
X D 103
Y A 200
Y B 201
Y C 202
Y D 203
Z A 300
Z B 301
Z C 302
Z D 303

提前致谢。

最佳答案

我喜欢这样的速度

i = df.AXIS.values
c = np.array(list('ABCD'))
v = np.column_stack([df[col].values for col in c])
idx = pd.MultiIndex.from_arrays(
[i.repeat(c.size), np.tile(c, i.size)],
names=['One', 'Two']
)
# Or this for brevity
# idx = pd.MultiIndex.from_product([i, c], names=['One', 'Two'])
pd.DataFrame(v.ravel(), idx, ['Num'])

Num
One Two
X A 100
B 101
C 102
D 103
Y A 200
B 201
C 202
D 203
Z A 300
B 301
C 302
D 303

关于python - Pandas:使用现有索引和列标题创建 MultiIndex/groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44055561/

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