1.列聚合
我认为您需要 apply 和 ,.join,然后对于变更单使用 double [[]]:
df = df1.groupby(["City"])['Name'].apply(','.join).reset_index()
df = df[['Name','City']]
print (df)
Name City
0 Mallory,Mallory Portland
1 Alice,Bob,Mallory,Bob Seattle
因为transform 使用聚合值创建新列:
df1['new'] = df1.groupby("City")['Name'].transform(','.join)
print (df1)
City Name new
0 Seattle Alice Alice,Bob,Mallory,Bob
1 Seattle Bob Alice,Bob,Mallory,Bob
2 Portland Mallory Mallory,Mallory
3 Seattle Mallory Alice,Bob,Mallory,Bob
4 Seattle Bob Alice,Bob,Mallory,Bob
5 Portland Mallory Mallory,Mallory
2。列和更多聚合
如果更多列需要agg 并在[] 中指定列或没有指定连接所有字符串列:
df1 = pd.DataFrame( {
"Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] ,
"Name2": ["Alice1", "Bob1", "Mallory1", "Mallory1", "Bob1" , "Mallory1"],
"City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle",
"Portland"] } )
print (df1)
City Name Name2
0 Seattle Alice Alice1
1 Seattle Bob Bob1
2 Portland Mallory Mallory1
3 Seattle Mallory Mallory1
4 Seattle Bob Bob1
5 Portland Mallory Mallory1
df = df = df1.groupby('City')['Name', 'Name2'].agg(','.join).reset_index()
print (df)
City Name Name2
0 Portland Mallory,Mallory Mallory1,Mallory1
1 Seattle Alice,Bob,Mallory,Bob Alice1,Bob1,Mallory1,Bob1
Anf 如果需要聚合所有列:
df = df1.groupby('City').agg(','.join).reset_index()
print (df)
City Name Name2
0 Portland Mallory,Mallory Mallory1,Mallory1
1 Seattle Alice,Bob,Mallory,Bob Alice1,Bob1,Mallory1,Bob1
df1 = pd.DataFrame( {
"Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] ,
"Name2": ["Alice1", "Bob1", "Mallory1", "Mallory1", "Bob1" , "Mallory1"],
"City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"],
'Numbers':[1,5,4,3,2,1]} )
print (df1)
City Name Name2 Numbers
0 Seattle Alice Alice1 1
1 Seattle Bob Bob1 5
2 Portland Mallory Mallory1 4
3 Seattle Mallory Mallory1 3
4 Seattle Bob Bob1 2
5 Portland Mallory Mallory1 1
df = df1.groupby('City').agg({'Name': ','.join,
'Name2': ','.join,
'Numbers': 'max'}).reset_index()
print (df)
City Name Name2 Numbers
0 Portland Mallory,Mallory Mallory1,Mallory1 4
1 Seattle Alice,Bob,Mallory,Bob Alice1,Bob1,Mallory1,Bob1 5