本文详解如何使用pandas对dataframe按多个列(如deal、commodity、startdate)分组,执行自定义聚合计算(如fprice公式),并将标量结果准确广播回原始数据的每一行,避免索引错位问题。
在Pandas中,对多列分组后进行聚合计算并“广播”结果到原始每行,是常见但易出错的操作。许多初学者尝试直接用 groupby(...).apply(...) 的返回值赋值给新列(如 df['fprice'] = ...),却因apply返回的是缩减后的Series(索引为分组键),而原始DataFrame索引未对齐,导致赋值错位(如示例中J2被错误赋予1.25)、部分行缺失或NaN——这正是原问题的核心症结。
✅ 正确做法是:分离计算与对齐两个步骤——先独立计算每组的聚合值,生成一个含分组键和结果的中间表;再通过merge(或map)将其安全、精确地回填至原始DataFrame。
以下为完整、可复现的解决方案:
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]
})
# ✅ 步骤1:分组聚合,计算每组的 fprice(公式:-(∑mtm - ∑(strike×qty)) / ∑qty)
fprice_series = df.groupby(['startdate', 'Commodity', 'Deal']).apply(
lambda g: -(g['mtmvalue'].sum() - (g['fixedpricestrike'] * g['quantity']).sum()) / g['quantity'].sum()
)
# 将结果转为DataFrame,重命名列为'fprice'
grouped_fprice = fprice_series.reset_index(name='fprice')
# ✅ 步骤2:左连接回原始DataFrame(关键!确保每行按分组键精准匹配)
df = pd.merge(df, grouped_fprice, on=
['startdate', 'Commodity', 'Deal'], 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.0 100.0 0.0 1 J2 Sell J (stock1, stock2) 01Jan23 01Feb23 10.0 10.0 100.0 0.0 2 J3 Buy J (stock1, stock2) 01Jan23 01Feb23 5.0 10.0 50.0 1.25 3 J4 Buy J (stock1, stock2) 01Jan23 01Feb23 5.0 5.0 25.0 1.25
? 关键注意事项:
掌握“先聚合、再对齐”的范式,即可稳健解决任意多列分组广播问题,远离索引陷阱。
# 大数据
# app
# pandas
# 字符串
# Lambda
# map
# 每组
# 的是
# 多个
# 将其
# 并将
# 自定义
# 将为
# 如何使用
# 却因
# 重命名
相关文章:
电脑免费海报制作网站推荐,招聘海报哪个网站多?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站之星展会模版如何一键下载生成?
建站之星伪静态规则如何正确配置?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何通过免费商城建站系统源码自定义网站主题与功能?
如何快速生成专业多端适配建站电话?
建站之星北京办公室:智能建站系统与小程序生成方案解析
建站主机选购指南:核心配置优化与品牌推荐方案
如何用PHP快速搭建CMS系统?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
制作旅游网站html,怎样注册旅游网站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
如何快速建站并高效导出源代码?
建站与域名管理如何高效结合?
如何快速使用云服务器搭建个人网站?
如何设计高效校园网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何通过.red域名打造高辨识度品牌网站?
如何快速搭建高效服务器建站系统?
建站之星3.0如何解决常见操作问题?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
兔展官网 在线制作,怎样制作微信请帖?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
定制建站如何定义?其核心优势是什么?
如何在Ubuntu系统下快速搭建WordPress个人网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
广州商城建站系统开发成本与周期如何控制?
*服务器网站为何频现安全漏洞?
建设网站制作价格,怎样建立自己的公司网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何在阿里云虚拟主机上快速搭建个人网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何快速启动建站代理加盟业务?
javascript基本数据类型及类型检测常用方法小结
如何零基础开发自助建站系统?完整教程解析
文字头像制作网站推荐软件,醒图能自动配文字吗?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
外贸公司网站制作,外贸网站建设一般有哪些步骤?
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
建站10G流量真的够用吗?如何应对访问高峰?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
安徽网站建设与外贸建站服务专业定制方案
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
小建面朝正北,A点实际方位是否存在偏差?
jQuery 常见小例汇总
建站之星免费版是否永久可用?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
*请认真填写需求信息,我们会在24小时内与您取得联系。