首页 > 解决方案 > 计算列的不同值及其在下一列中的并行值映射

问题描述

输入:

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

谢谢您的帮助

标签: pythonpandas

解决方案


您可以创建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()

推荐阅读