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