输入:
Boro Completed?
0 M Y
1 M Y
2 Q N
3 Q Y
4 Q Y
所需输出:
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
正如你所看到的,M boro是完全完整的,而Q不是。我想展示的是人权法案的完成率。
目前我只有总体完成率,不知道如何使用groupby。
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]
发布于 2020-02-20 17:49:48
我们做transform
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
https://stackoverflow.com/questions/60325789
复制相似问题