如何为Pandas中具有重复值的行返回单行

时间:2014-10-02 15:23:46

标签: python pandas duplicates

我想快速完成,而不是从一行到另一行,因为它是一个相当大的文件。我在pandas上找不到任何东西,虽然pivot_table似乎非常接近......这就是我所拥有的:

A    B
0    Tree
0    Leaves
0    Buds
1    Ocean
1    Blue

我想要的是什么:

A    B
0    Tree ; Leaves ; Buds
1    Ocean ; Blue

2 个答案:

答案 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