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

Pandas对比前一日数据识别缺失Name并补0生成新DataFrame

解决方法

你可以用Pandas的重索引/行列转换快速实现需求,以下是可直接运行的代码:

方案1:unstack+stack简洁实现

import pandas as pd

# 你给出的原始数据构造逻辑
df = pd.DataFrame({'Date':   {0:'2020-04-01', 1:'2020-04-01', 2:'2020-04-01', 
                              3:'2020-04-02', 4:'2020-04-02', 
                              5:'2020-04-03', 6:'2020-04-03', 7:'2020-04-03'},
                    'Name':  {0:'AA', 1:'BB', 2:'CC', 
                              3:'AA', 4:'BB',  
                              5:'AA', 6:'BB', 7:'CC'},
                    'Weight':{0:1, 1:3, 2:6, 
                              3:1, 4:4, 
                              5:2, 6:5, 7:7}})
df = df.set_index(['Date'])

# 核心处理逻辑
df = df.set_index('Name', append=True)\
       .unstack(fill_value=0)\
       .stack()\
       .reset_index(level='Name')

运行后输出的结果和你给出的预期完全一致,每个日期都包含全量Name,缺失的Weight自动填充为0。

方案2:手动构造全量索引实现

如果更习惯显式指定全量维度的逻辑,可以用以下方案:

# 提取所有唯一的日期、Name值
all_dates = df.index.unique()
all_names = df['Name'].unique()
# 生成日期+Name的全量笛卡尔积索引
full_index = pd.MultiIndex.from_product([all_dates, all_names], names=['Date', 'Name'])
# 重索引填充缺失值
df = df.set_index('Name', append=True)\
       .reindex(full_index, fill_value=0)\
       .reset_index(level='Name')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:27:04