计算列的不同值及其在下一列中的并行值映射

时间:2018-08-21 10:54:20

标签: python pandas

输入:

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

感谢您的帮助

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()