如何使用python pandas按列分组并计算条件值?

输入:


df=pd.DataFrame({

    'BusId':['abc1','abc2','abc3','abc1','abc2','abc4'],

    "Fair":[5,6,7,10,5,4]

})

需要按 BusId 分组并需要以下输出


输出:


BusId   Count of Fair>=5    Count of Fair>=10

abc1    2                         1

abc2    1                         0

abc3    1                         0

abc4    0                         0

谢谢您的帮助。


白衣非少年
浏览 259回答 3
3回答

德玛西亚99

您可以使用pd.cut来避免对范围进行硬编码。只需剪切数据,然后应用即可cumsum:binned_data = pd.cut(df.Fair,                      bins=[0, 5, 10, np.inf],                      labels=['>=0', '>=5', '>=10'],                      right=False)df = (pd.get_dummies(binned_data)        .sort_index(axis=1, ascending=False)        .cumsum(1)        .groupby(df.BusId, sort=False)        .sum()        .iloc[:, 1::-1]))df       >=5  >=10BusId           abc1     2     1abc2     2     0abc3     1     0abc4     0     0

慕哥6287543

为避免聚合,您也可以apply改用。实质与user3483203的答案相同:df.groupby('BusId').apply(lambda x: pd.Series(               dict(five=(x.Fair >=  5).sum(),                     ten=(x.Fair >= 10).sum())))# BusId              five              ten     # abc1                  2                1# abc2                  2                0# abc3                  1                0# abc4                  0                0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python