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