我有一个包含两列的数据框,其中包含字符串条目,例如:
Col1 Col2
E1 K1
E2 K2
E3 K3
...
我想在Col2上创建索引,但是那里的条目不是唯一的。所以我想在Col2中合并共享条目的所有行。假设K2,K3相同。然后合并之后,我想要的是将Col1值序列化为仅形成一行的列表,即:
Col1 Col2
E1 K1
[E2, E3] K2
...
实现这一目标的最干净的方法是什么?
答案 0 :(得分:1)
首先将K3
更改为K2
,然后按column2分组并对其进行汇总
df[df=='K3']='K2'
df.groupby('Col2').agg(list)
Col1
Col2
K1 [E1]
K2 [E2, E3]
答案 1 :(得分:1)
您可以将mapper
与groupby
一起使用
df.set_index('Col2').groupby(by={'K1':'K1','K2':'K2','K3':'K2'},axis=0).Col1.apply(list)
Out[116]:
K1 [E1]
K2 [E2, E3]
Name: Col1, dtype: object
答案 2 :(得分:0)
由于您不了解先验对象是什么骗子,您可以这样做:
df.groupby('Col2').agg(lambda s: list(s))
由于某种原因.agg(list)
对我不起作用...