Pandas group by聚合字符串字段

时间:2014-09-03 15:23:07

标签: python pandas group-by

我的df是这样的:

1   2   3
A  abc  ab
A  abc  cc
A  abc  ab

我想按记录分组

1   2   3
A  abc  ab
A  abc  cc

甚至更好,有一个带有连接字符串的字段:

   1  
A_abc_ab
A_abc_cc

Pandas GroupBy似乎不能使用string:

df = df.groupby(['1','2','3'])

返回

<pandas.core.groupby.DataFrameGroupBy object at 0x7f4a37549bd0>

2 个答案:

答案 0 :(得分:4)

您未正确应用groupby。同样在groupby后你必须group.aggregate()以便在某些功能的基础上减少细胞

可能你可能想要这个更好:

df.apply('-'.join, axis=1)

产生

0    A-abc-ab
1    A-abc-cc
2    A-abc-ab
dtype: object

当然,您可以在加入

之前drop_duplicates

答案 1 :(得分:3)

离开这个:

1   2   3
A  abc  ab
A  abc  cc
A  abc  ab

对此:

1   2   3
A  abc  ab
A  abc  cc

根本不涉及分组!你只是丢掉了重复项:

In [9]: df.drop_duplicates()
Out[9]: 
   1    2   3
0  A  abc  ab
1  A  abc  cc

然后您可以使用apply连接:

In [10]: df.drop_duplicates().apply('_'.join, axis=1)
Out[10]: 
0    A_abc_ab
1    A_abc_cc
dtype: object