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

标签 python pandas pivot

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

我一直在尝试 .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/

相关文章:

postgresql - 像 excel 一样创建 Postgres Pivot

python - 确定与给定值匹配的条目数,按列分组

python - sys.exc_info() 是如何工作的?

python - Django 午夜营业时间后 TimeField 比较错误

pandas - 左合并后令人困惑的 pandas 索引变化

mysql - 在mysql中查找所有用户购买的所有单个项目

python - 如何更改 Python Polars 库中单个列的位置?

python - Pandas df.style.bar 同时保持四舍五入

python - 学习使用 pandas datareader 绘制雅虎股价,但似乎不正确

php - 如何使用php数组将sql查询结果转换为数据透视表?