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

Pandas透视表转DataFrame计算小计:缺失值填充报错及优化问询

层级数据集小计值填充问题

问题背景

我有一个带层级结构的数据集,其中total列值为Y的行是小计行,需要汇总其下方total为N的行对应的val列数值;col1-col3(实际为多列)构成层级结构,下级行需向上汇总。

问题现象

部分小计行(total='Y')的val列值为0(已通过fillna(0)处理),我尝试用pivot_table计算汇总值并填充,代码如下:

pivot = df.pivot_table(
    values=['val1', 'val2', 'val3'], 
    index=['col1', 'col2', 'col3'], 
    aggfunc=np.sum, fill_value=0)

qry = f"Total == 'Y' & val1 == 0 & val2 == 0 & val3 == 0 & col2 != 0"
df.loc[df.eval(qry), ['val1', 'val2', 'val3']] = pivot.loc[(df['col1'], df['col2'], df['col3'])]

执行后报错:ValueError: Buffer dtype mismatch, expected 'Python object' but got 'long'。

后续尝试的问题

  • 尝试使用rhug123的单行代码填充,触发InvalidIndexError,不确定是否是改写错误:
columns = ['Value1', 'Value2', 'Value3', 'Value4', 'Value5']
index = ['Column1', 'Column2', 'Column3', 'Column4', 'Column5', 'Column6']
df = (df.set_index(index).fillna(df.loc[df['Total'].eq('N')].groupby(index)[columns].sum()).reset_index())
  • Laurent的代码在简化数据集上有效,但在真实数据中未按层级列(col1-col6)限定汇总范围,导致汇总行数错误,需要调整代码仅对同层级的N行求和。

求助

如何修复pivot_table填充时的报错,或者找到正确的缺失小计值填充方法?


内容的提问来源于stack exchange,提问作者Christian C. Schouten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:21:26