我有下面的df
code pct year_month
10 6.6156 201905
10 6.0868 201905
10 5.8975 201905
10 11.2195 201905
10 11.1404 201905
我喜欢做以下事情
df2 = df.sort_values('pct', ascending=False)
df2['pct'].cumsum().le(20).mean()
0.2
以groupby
的方式
df.groupby(['year_month', 'code'])['pct'].apply(lambda x: x.cumsum().le(20).mean())
但结果不同
year_month code
201905 BR10 0.6
我认为groupby
应该按照默认的降序对pct
进行排序,但似乎不是,所以我想知道如何在每个year_month
,code
组中对cumsum
进行排序
您的代码是不同的,对于相同的输出,需要按前2列排序-
['year_month','code']
,或者使用此示例数据忽略它(如果已经排序):groupby中的排序值在
groupby
-这里是['year_month', 'code']
,而不是pct
:因此,对于相同的输出排序,这里添加了
pct
列,如果需要防止按'year_month', 'code']
排序,则添加sort=False
:相关问题 更多 >
编程相关推荐