首页 > 解决方案 > 如何将 Pandas DataFrame 中的数据与多索引组合到列表中

问题描述

我有一个带有多索引的 Pandas 数据框,它是枢轴的结果(如在枢轴熊猫函数描述中)

df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
                       'two'],
               'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
               'baz': [1, 2, 3, 4, 5, 6],
               'zoo': ['x', 'y', 'z', 'q', 'w', 't']})
df

    foo bar baz zoo
0   one A   1   x
1   one B   2   y
2   one C   3   z
3   two A   4   q
4   two B   5   w
5   two C   6   t

dp = df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])
dp

          baz         zoo
bar A   B   C   A   B   C
foo                     
one 1   2   3   x   y   z
two 4   5   6   q   w   t

我想让它看起来像这样:

bar     A       B       C
foo         
one [1,x]   [2,y]   [3,z]
two [4,q]   [5,w]   [6,t]

0 级索引中的数据在哪里组合在一个列表中......有什么想法可以做到这一点吗?试过 agg(list) 但这没有用......

标签: pythonpandas

解决方案


一种选择是先组合列bazzoo然后再旋转表格:

df['combined'] = list(zip(df.baz, df.zoo))

df.pivot('foo', 'bar', 'combined')
#bar       A       B       C
#foo                        
#one  (1, x)  (2, y)  (3, z)
#two  (4, q)  (5, w)  (6, t)

推荐阅读