Pandas 如何在大熊猫中按列对相似的类群进行分组
伙计们 我有这样的数据帧:Pandas 如何在大熊猫中按列对相似的类群进行分组,pandas,Pandas,伙计们 我有这样的数据帧: ID | Name | Thing | belongs ---+------+---------+-------- 1 John 10 1 2 Tom 10 2 3 Tom 10 1 4 John 10 2 5 Bob 10 3 我不知道如何将其分组,如: Tom,John 10 1,2 Bob. 10 3
ID | Name | Thing | belongs
---+------+---------+--------
1 John 10 1
2 Tom 10 2
3 Tom 10 1
4 John 10 2
5 Bob 10 3
我不知道如何将其分组,如:Tom,John 10 1,2
Bob. 10 3
我可以按用户分组,但我会得到两个分组,而不是一个。设置
df = pd.DataFrame({'ID': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
'Name': {0: 'John', 1: 'Tom', 2: 'Tom', 3: 'John', 4: 'Bob'},
'Thing': {0: 10, 1: 10, 2: 10, 3: 10, 4: 10},
'belongs': {0: 1, 1: 2, 2: 1, 3: 2, 4: 3}})
解决方案
#group by name, thing and then concat belongs
df = df.groupby(by=['Name','Thing'])['belongs']\
.apply(lambda x: ','.join(sorted(x.astype(str).tolist())))\
.to_frame().reset_index()
df.groupby(by=['Thing','belongs'])['Name']\
.apply(lambda x: ','.join(x.tolist())).to_frame().reset_index()
Out[1140]:
Thing belongs Name
0 10 1,2 John,Tom
1 10 3 Bob
有没有可能把他们按“东西”分组,这样我就有两组而不是三组了?