按列分组并将另一列的值分散到其他列中

我有当前的数据框,我正在尝试按 进行分组Name并将 的值分散weight到列中,并在每次出现时进行计数。谢谢!

df = pd.DataFrame({'Name':['John','Paul','Darren','John','Darren'],
'Weight':['Average','Below Average','Above Average','Average','Above Average']})

期望的输出:

https://img1.sycdn.imooc.com/654ce4ad000130cd03720102.jpg

梵蒂冈之花
浏览 153回答 3
3回答

白猪掌柜的

尝试pandas 交叉表:pd.crosstab(df.Name, df.Weight)Weight  Above Average   Average Below AverageName            John           0           2        0Paul           0           0        1Darren         2           0        0

ABOUTYOU

使用 groupby 和 unstack:    df = pd.DataFrame({'Name':['John','Paul','Darren','John','Darren'],'Weight':['Average','Below Average','Above Average','Average','Above Average']})df = df.groupby(['Name', 'Weight'])['Weight'].count().unstack(1).fillna(0).astype(int).reset_index()df = df.rename_axis('', axis=1).set_index('Name')dfOut[1]:         Above Average  Average  Below AverageName                                         Darren              2        0              0John                0        2              0Paul                0        0              1

千巷猫影

在这里用来get dummies实现你所需要的pd.get_dummies(df.set_index('Name'), dummy_na=False,prefix=[None]).groupby('Name').sum()          Above Average  Average  Below AverageName                                         Darren              2        0              0John                0        2              0Paul                0        0              1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python