我要按颜色分组,计算一列中该颜色的出现次数,并创建一个新的列within_range
,其中将包含以下情况的次数:
min_amount <= amount <= max_amount
df = pd.DataFrame({'color': ['red', 'yellow', 'blue', 'red','yellow'],
'amount': [0.5, 0.25, 0.125, 0.9, 0.8],
'min_amount': [0, 0.2, 0.1, 0.5, 0.7],
'max_amount':[1, 0.7, 0.2, 0.6, 0.9]})
可以使用以下方法计算出现次数:
df.groupby('color').agg({'color':'count'})
,但如何获得预期的结果?
预期结果:
color count within_range
red 2 1
yellow 2 2
blue 1 1
答案 0 :(得分:2)
您只需要定义within_range
系列和分组依据:
df['within_range'] = (df['amount'].le(df['max_amount'])
& df['amount'].ge(df['min_amount'])
)
(df.groupby('color')['within_range']
.agg(count='count',winthin_range='sum')
)
输出:
count winthin_range
color
blue 1 1.0
red 2 1.0
yellow 2 2.0