You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于另一DataFrame的均值将ytest Series转换为布尔值?

解决方案

你可以通过以下两种方式实现需求,将固定的Value替换为对应CNPJ的历史均值,生成每行数值是否大于均值的布尔值结果:

方法一:索引映射(高效矢量化操作)

直接利用多级索引的第一级(CNPJ)匹配历史均值,再进行比较:

# 假设存储历史均值的DataFrame名为mean_df
result = ytest > ytest.index.get_level_values(0).map(mean_df['Mean'])

原理:通过get_level_values(0)提取所有行的CNPJ索引,再用map从mean_df中获取对应CNPJ的历史均值,将均值广播到该CNPJ下的所有日期行,最后与ytest的数值做大于比较,返回与原ytest索引结构一致的布尔值Series。

方法二:GroupBy + Transform(贴近原代码逻辑)

如果希望沿用原代码的groupby+transform思路,可以这样修改:

# 假设存储历史均值的DataFrame名为mean_df
result = ytest.groupby(level=0).transform(lambda x: x > mean_df.loc[x.name, 'Mean'])

原理:按第一级索引(CNPJ)分组,每个分组的x.name即为当前CNPJ,通过mean_df.loc[x.name, 'Mean']获取该CNPJ的历史均值,再与分组内的每个数值比较,transform会将结果还原为原多级索引结构。

内容的提问来源于stack exchange,提问作者Guilherme Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:25:35