使用pandas对dataframe按多列分组计算指标(如加权平均、调整价等),再将标量结果广播到每组所有行,应避免直接用`groupby().apply()`赋值,而需先聚合生成映射表,再通过`merge`或`map`安全回填。
在pandas中,对多列(如 ['Deal', 'Commodity', 'startdate'])进行分组并为每组计算一个汇总值(例如自定义公式得出的 fprice),然后将该值广播(broadcast)到组内每一行,是常见但易出错的操作。问题核心在于:df.groupby(...).apply(...) 返回的是一个以分组键为索引的Series(或DataFrame),若直接赋值给新列(如 df['fprice'] = ...),pandas会尝试按原始DataFrame的索引对齐,而非按分组逻辑广播——这极易导致长度不匹配、索引错位或NaN填充,正如提问中出现的 J2 被错误赋予 1.25、而 J3/J4 反而缺失的结果。
✅ 正确做法是两步分离:
以下是以提问数据为例的完整实现:
import pandas as pd
# 示例数据(注意列名大小写与提问一致)
df = pd.DataFrame({
'ID': ['J1', 'J2', 'J3', 'J4'],
'Deal': ['Sell', 'Sell', 'Buy', 'Buy'],
'Party': ['J', 'J', 'J', 'J'],
'Commodity': ['(stock1, stock2)'] * 4,
'startdate': ['01Jan23'] * 4,
'enddate': ['01Feb23'] * 4,
'fixedpricestrike': [10.0, 10.0, 5.0, 5.0],
'quantity': [10, 10, 10, 5],
'mtmvalue': [100.0, 100.0, 50.0, 25.0]
})
# Step 1: 按多列分组,计算每组 fprice(公式:-(∑mtm - ∑(strike×qty)) / ∑qty)
grouped_fprice = df.groupby(['Deal', 'Commodity', 'startdate']).apply(
lambda g: -(g['mtmvalue'].sum() - (g['fixedpricestrike'] * g['quantity']).sum()) / g['quantity'].sum()
).reset_index(name='fprice')
# Step 2: 左连接回原表(确保每行都获得对应组的 fprice)
df = pd.merge(df, grouped_fprice, on=['Deal', 'Commodity', 'startdate'], how='left')
print(df)输出结果将严格符合预期:
ID Deal Party Commodity startdate enddate fixedpricestrike quantity mtmvalue fprice 0 J1 Sell J (stock1, stock2) 01Jan23 01Feb23 10.0 10 100.0 0.0 1 J2 Sell J (stock1, stock2) 01Jan23 01Feb23 10.0 10 100.0 0.0 2 J3 Buy J (stock1, stock2) 01Jan23 01Feb23 5.0 10 50.0 1.25 3 J4 Buy J (stock1, stock2) 01Jan23 01Feb23 5.0 5 25.0 1.25
? 关键注意事项:
掌握这一“聚合→关联”范式,即可稳健实现多维分组指标的行级广播,是构建金融风控、交易分析等场景中衍生特征的基础技能。
# app
# 金融
# pandas
# 数据类型
# Float
# 封装
# 字符串
# map
# 对象
# 每组
# 多维
# 的是
# 这一
# 单键
# 适用于
# 自定义
# 为例
# 而非
# 并为
相关文章:
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何用已有域名快速搭建网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何用狗爹虚拟主机快速搭建网站?
制作营销网站公司,淘特是干什么用的?
如何在腾讯云免费申请建站?
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站之星导航菜单设置与功能模块配置全攻略
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
南平网站制作公司,2025年南平市事业单位报名时间?
如何用虚拟主机快速搭建网站?详细步骤解析
css网站制作参考文献有哪些,易聊怎么注册?
建站之星安装步骤有哪些常见问题?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
相册网站制作软件,图片上的网址怎么复制?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何高效完成独享虚拟主机建站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
济南网站制作的价格,历城一职专官方网站?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何基于云服务器快速搭建网站及云盘系统?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速重置建站主机并恢复默认配置?
如何通过IIS搭建网站并配置访问权限?
如何在建站宝盒中设置产品搜索功能?
如何做网站制作流程,*游戏网站怎么搭建?
如何选择可靠的免备案建站服务器?
建站之星后台密码如何安全设置与找回?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
网站设计制作企业有哪些,抖音官网主页怎么设置?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
建站之星安装后如何配置SEO及设计样式?
如何快速启动建站代理加盟业务?
建站上市公司网站建设方案与SEO优化服务定制指南
网站制作公司排行榜,四大门户网站排名?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
已有域名如何快速搭建专属网站?
北京网站制作网页,网站升级改版需要多久?
如何快速生成ASP一键建站模板并优化安全性?
如何自定义建站之星网站的导航菜单样式?
如何在阿里云ECS服务器部署织梦CMS网站?
清除minerd进程的简单方法
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何通过服务器快速搭建网站?完整步骤解析
大连 网站制作,大连天途有线官网?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
*请认真填写需求信息,我们会在24小时内与您取得联系。