程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了pandas 数据透视表,其中该列包含具有多个类别的字符串大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

开发过程中遇到pandas 数据透视表,其中该列包含具有多个类别的字符串的问题如何解决?下面主要结合日常开发的经验,给出你关于pandas 数据透视表,其中该列包含具有多个类别的字符串的解决方法建议,希望对你解决pandas 数据透视表,其中该列包含具有多个类别的字符串有所启发或帮助;

我有一个表单数据:

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

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

'a'  'b'  'c'
1
2    2
3    3    3
     2    2
     1
@H_674_7@

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

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

产生这个结果

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

解决方法

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

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

输出:

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
@H_674_7@

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

,

尝试使用 str.get_dummies 并乘以 value 列(如有必要,然后将 0 替换为 nan

df['cat'].str.get_dummies(",").mul(df['value'],axis=0).replace(0,np.nan)
@H_674_7@

     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
@H_674_7@

大佬总结

以上是大佬教程为你收集整理的pandas 数据透视表,其中该列包含具有多个类别的字符串全部内容,希望文章能够帮你解决pandas 数据透视表,其中该列包含具有多个类别的字符串所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。