栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Groupby并在熊猫,Python中转置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Groupby并在熊猫,Python中转置

我认为需要

set_index
unstack

df['COUNT'] = df.groupby(['ID','col']).cumcount()+1df = df.set_index(['ID','col', 'COUNT'])['col2'].unstack().add_prefix('col').reset_index()print (df)COUNT  ID col  col1  col20       1   A  50.0  52.01       1   B  45.0   NaN2       1   C  18.0   NaN

要么:

c = df.groupby(['ID','col']).cumcount()+1df = df.set_index(['ID','col', c])['col2'].unstack().add_prefix('col').reset_index()print (df)   ID col  col1  col20   1   A  50.0  52.01   1   B  45.0   NaN2   1   C  18.0   NaN

编辑:

对于多列,解决方案有所更改,因为在

MultiIndex
in列中进行处理:

df['COUNT'] = (df.groupby(['ID','col']).cumcount()+1).astype(str)#remove col2df = df.set_index(['ID','col', 'COUNT']).unstack()#flatten Multiindexdf.columns = df.columns.map('_'.join)df = df.reset_index()print (df)   ID col  col2_1  col2_2 col3_1 col3_2  col4_1  col4_20   1   A    50.0    52.0      S      M     1.0     4.01   1   B    45.0     NaN      N   None     8.0     NaN2   1   C    18.0     NaN      S   None     7.0     NaN


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号