输入:
df=pd.DataFrame(
{
'BusId':['ABC1','ABC1','ABC2','ABC4','ABC5','ABC5'],
'Route':[101,102,102,104,104,106]
})
df
需要计算BusId的不同值及其值映射。
预期的输出1:
BusId Route
101 ABC1
102 ABC1,ABC2
104 ABC4,ABC5
106 ABC5
预期的输出2:
BusId Route
101 1
102 2
104 2
106 1
感谢您的帮助
答案 0 :(得分:1)
您可以使用DataFrameGroupBy.agg
创建一个DataFrame
:
df1 = df.groupby('Route')['BusId'].agg([','.join, 'size']).reset_index()
print (df1)
Route join size
0 101 ABC1 1
1 102 ABC1,ABC2 2
2 104 ABC4,ABC5 2
3 106 ABC5 1
但是如果确实需要2个不同的df:
df2 = df.groupby('Route')['BusId'].apply(','.join).reset_index()
df3 = df.groupby('Route')['BusId'].size().reset_index()