3 回答

TA貢獻1770條經(jīng)驗 獲得超3個贊
您可以使用pd.cut來避免對范圍進行硬編碼。只需剪切數(shù)據(jù),然后應(yīng)用即可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 >=10
BusId
abc1 2 1
abc2 2 0
abc3 1 0
abc4 0 0

TA貢獻1831條經(jīng)驗 獲得超10個贊
為避免聚合,您也可以apply改用。實質(zhì)與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
添加回答
舉報