pandas数据透视表,其中该列包含具有多个类别的字符串

我有以下形式的数据:

'cat'     'value'
a         1
a,b       2
a,b,c     3
b,c       2
b         1

我想使用数据透视表进行转换:

'a'  'b'  'c'
1
2    2
3    3    3
     2    2
     1

我如何执行此操作。如果我使用 pivot 命令:

df.pivot(columns= 'cat', values = 'value')

这产生了这个结果

'a' 'a,b' 'a,b,c' 'b,c' 'b' 
1
     2
           3
                   2
                        1

回答

可以.explode()在将字符串转换为列表后使用,然后正常旋转:

df['cat'] = df['cat'].str.split(',')
df = df.explode('cat').pivot_table(index=df.explode('cat').index,columns='cat',values='value')

这输出:

cat a   b   c
0   1.0 NaN NaN
1   2.0 2.0 NaN
2   3.0 3.0 3.0
3   NaN 2.0 2.0
4   NaN 1.0 NaN

然后,您可以重置或重命名索引(如果您不希望它被命名)cat


以上是pandas数据透视表,其中该列包含具有多个类别的字符串的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>