我想快速完成,而不是从一行到另一行,因为它是一个相当大的文件。我在pandas上找不到任何东西,虽然pivot_table似乎非常接近......这就是我所拥有的:
A B
0 Tree
0 Leaves
0 Buds
1 Ocean
1 Blue
我想要的是什么:
A B
0 Tree ; Leaves ; Buds
1 Ocean ; Blue
答案 0 :(得分:2)
我们可以在'A'上执行一个groupby,然后应用一个函数(在这种情况下为lambda),我们加入所需的分隔符;
,并列出对B值的列表理解。
如果您想要恢复B列,只需拨打reset_index()
:
In [238]:
gp = df.groupby('A')
gp.apply(lambda x: ' ; '.join([t for t in list(x['B'])])).reset_index()
Out[238]:
A 0
0 0 Tree ; Leaves ; Buds
1 1 Ocean ; Blue
答案 1 :(得分:2)
在Python中,您可以使用some_delimiter.join(things_you_want_to_join)
加入内容,例如: ','.join("abc") == 'a,b,c'
。我们可以在B
A
列
>>> df.groupby("A")["B"].apply(' ; '.join)
A
0 Tree ; Leaves ; Buds
1 Ocean ; Blue
Name: B, dtype: object
然后将B
作为名称返回:
>>> df.groupby("A")["B"].apply(' ; '.join).reset_index()
A B
0 0 Tree ; Leaves ; Buds
1 1 Ocean ; Blue