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

如何将单行YTD数据追加到未堆叠的多级索引Pandas DataFrame

报错原因

你遇到的InvalidIndexError错误由两个问题共同导致:

  1. 你用来计算YTD行的代码逻辑错误:当前dfHubR2Imonthallshops是按月分组得到的多行结果,索引为月份数值,和主表dfHubR2I的索引重复,拼接时触发索引冲突
  2. 主表与待拼接的单行数据列名、结构未对齐,你需要的YTD是年初到当前月的整体中位数,而非按月分组的结果

解决方案

按照下面的步骤处理即可得到目标结构:

  1. 先计算正确的YTD单行数据,对齐主表的列结构和数据格式
# 计算各门店YTD中位数
ytd_shop_median = dfHubPV2.loc[
    (dfHubPV2['Ind'].dt.year == year)
    & (dfHubPV2['Ind'].dt.month < date.month) # 匹配你之前取到date.month-1的筛选逻辑
, :].groupby('SHOP_CODE')['R2I'].median().fillna('-')

# 计算全店YTD中位数
ytd_all_median = dfHubPV2.loc[
    (dfHubPV2['Ind'].dt.year == year)
    & (dfHubPV2['Ind'].dt.month < date.month)
, 'R2I'].median()

# 转成单行DataFrame,设置索引为YTD,补充全店列,对齐主表结构
ytd_row = ytd_shop_median.to_frame().T
ytd_row['All Shops'] = ytd_all_median
ytd_row.index = ['YTD']
  1. 直接拼接主表和YTD行即可
df_final = pd.concat([dfHubR2I, ytd_row], axis=0)

注意事项

请统一列名大小写,避免主表的All Shops和待拼接数据的All shops大小写不一致导致列数据错位。

内容的提问来源于stack exchange,提问作者Rachel Porter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:06:02