Python 使用groupby和find ratio
输入: 期望输出:Python 使用groupby和find ratio,python,pandas,Python,Pandas,输入: 期望输出: Boro Completed? 0 M Y 1 M Y 2 Q N 3 Q Y 4 Q Y 正如你所看到的,米堡是完全完整的,Q不是。我想展示一下波罗的海的完工率 目前我只有总体完成率,无法确定如何使用groupby来完成此任务 Boro Completed? Ratio 0 M Y 1 1 M
Boro Completed?
0 M Y
1 M Y
2 Q N
3 Q Y
4 Q Y
正如你所看到的,米堡是完全完整的,Q不是。我想展示一下波罗的海的完工率
目前我只有总体完成率,无法确定如何使用groupby来完成此任务
Boro Completed? Ratio
0 M Y 1
1 M Y 1
2 Q N 0.67
3 Q Y 0.67
4 Q Y 0.67
我们进行
转换
data = {'Boro':['M','M','Q','Q','Q'],
'Completed?':['Y','Y','N','Y','Y']}
df = pd.DataFrame(data)
df['Ratio'] = df[df['Completed?'] == 'Y'].shape[0]/df.shape[0]
我认为这毫无意义,为什么
1,1
而不是0.333,0.666,0.666
?应该是0.67吗?是的,我的错误,应该是。67
s=df['Completed?'].ne('N').groupby(df['Boro']).transform('mean')
Out[66]:
0 1.000000
1 1.000000
2 0.666667
3 0.666667
4 0.666667
Name: Completed?, dtype: float64
df['ratio']=s