Pandas groupby和使用行筛选器的转换

z2acfund  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(169)

我正在使用以下多索引 Dataframe :

我想得到列'EY'的平均值,它是按['date','SECTOR']分组的所有行的平均值,但前提是EST_UNIV == 1。
我可以执行以下操作:

这样就得到了我所需要的大部分内容,但您会注意到行数从6553下降到了1313。
我希望提取原始 Dataframe 中所有行的值,即使EST_UNIV == 0,但我希望平均值计算仅适用于EST_UNIV == 1的行。
非常感谢你的帮助!

ogq8wdun

ogq8wdun1#

如果不符合条件,则对缺少值的帮助器列使用Series.where

df['new'] = (df.assign(new = df['EY'].where(df.EST_UNIV.eq(1)))
               .groupby(['date','SECTOR'])['new']
               .transform('mean'))

相关问题