1

输入:

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

谢谢您的帮助

4

1 回答 1

1

您可以创建DataFrame一个DataFrameGroupBy.agg

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()
于 2018-08-21T11:11:52.830 回答