gpt4 book ai didi

python - 在一列中给出相同的值,连接剩余的行?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:35 25 4
gpt4 key购买 nike

给定 pandas DataFrame:

name   hobby   since
paul A 1995
john A 2005
paul B 2015
mary G 2013
chris E 2005
chris D 2001
paul C 1986

我想得到:

name   hobby1   since1    hobby2   since2    hobby3   since3
paul A 1995 B 2015 C 1986
john A 2005 NaN NaN NaN NaN
mary G 2013 NaN NaN NaN NaN
chris E 2005 D 2001 NaN NaN

即我想每个名字一行。一个人可以拥有的最大爱好数量,在这种情况下,比如 3,是我事先知道的。执行此操作的最优雅/最快捷的方法是什么?

最佳答案

可以先melt然后,groupby.cumcount()添加到 variable,然后使用 pivot_table() 进行数据透视:

m=df.melt('name')
(m.assign(variable=m.variable+(m.groupby(['name','variable']).cumcount()+1).astype(str))
.pivot_table(index='name',columns='variable',values='value',aggfunc='first')
.rename_axis(None,axis=1))

      hobby1 hobby2 hobby3 since1 since2 since3
name
chris E D NaN 2005 2001 NaN
john A NaN NaN 2005 NaN NaN
mary G NaN NaN 2013 NaN NaN
paul A B C 1995 2015 1986

关于python - 在一列中给出相同的值,连接剩余的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com