将索引转换为列Pandas

时间:2019-08-19 03:49:42

标签: pandas pandas-groupby

我具有以下多索引数据框:

import pandas as pd

item_id = [3,3,3,3,3,3,3,3,7,7,7,7,7] 
target = [0,0,0,1,1,2,2,2,0,0,0,1,2]
label = ['a','a','a','b','b','c','c','c','a','a','a','b','c']

df = pd.DataFrame({'item_id': item_id, 'target': target, 'label': label})
print(df)

group = df.groupby(['item_id', 'target']).agg(lambda x: ','.join(x))
print(group)

以下是输出:

df

    item_id  target label
0         3       0     a
1         3       0     a
2         3       0     a
3         3       1     b
4         3       1     b
5         3       2     c
6         3       2     c
7         3       2     c
8         7       0     a
9         7       0     a
10        7       0     a
11        7       1     b
12        7       2     c

group

                label
item_id target       
3       0       a,a,a
        1         b,b
        2       c,c,c
7       0       a,a,a
        1           b
        2           c

如何将目标转换为以下列?

item_id     0       1       2
3       a,a,a     b,b   c,c,c
7       a,a,a       b       c

1 个答案:

答案 0 :(得分:0)

您可以使用 unstack()解决问题

df_test = group['label'].unstack()
df_test.head()

结果:

target  0   1   2
item_id         
3   a,a,a   b,b c,c,c
7   a,a,a   b   c