原始 df:df=pd.DataFrame({'name':['id1','id1','id2','id2','id2'], 'attr1':['a','b','c','d','e']}) Out[45]: name attr10 id1 a1 id1 b2 id2 c3 id2 d4 id2 e我想要的是:系统需要更多详细信息,但我无话可说,所以请不要在这里查看这些文字,这会浪费您的时间。
2 回答

明月笑刀无情
TA贡献1828条经验 获得超4个赞
让我们尝试cumcount使用附加键进行分配
s = df.assign(key=df.groupby('name').cumcount()+1).pivot('name','key','attr1')
s
Out[125]:
key 1 2 3
name
id1 a b NaN
id2 c d e

慕神8447489
TA贡献1780条经验 获得超1个赞
做就是了
按列分组
添加 lambda 聚合函数
拆分为列。
df.groupby('name')
.agg(lambda x: '|'.join(x))
.attr1.str.split('|',expand=True)
将以上三者结合起来
>> df.groupby('name').agg(lambda x: '|'.join(x)).attr1.str.split('|',expand=True)
0 1 2
name
id1 a b None
id2 c d e
添加回答
举报
0/150
提交
取消