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

检查pandas dataframe中是否存在指定日期,缺失则追加到表末

错误原因
  • pd.DataFrame.append() 方法本身不支持原位修改,调用后会返回新的DataFrame对象,原对象不会被修改,你的代码没有接收返回值,所以追加操作没有生效。
  • 循环遍历的idx变量没有提前定义,你实际生成的比对基准是dateRange,应该遍历该变量才对。
  • 所有的追加操作都作用在新建的df变量上,但最后打印的是原dftickets,自然看不到修改结果。
  • 你已经给原表插入了Data列,此时表的总列数是48(原47列+1列新列),追加时用[0]*47会导致列数不匹配。
  • append传入纯列表的格式不符合要求,pandas无法正确识别为一行数据,会拆成多行异常值。

修复方案

pandas 1.4及以上版本已经正式弃用DataFrame.append()方法,官方推荐使用pd.concat()完成多行拼接,效率远高于循环append,适配你需求的代码如下:

import pandas as pd

# 1. 生成日期列,和原有逻辑保持一致
dftickets.insert(0, 'Data', dftickets['created_at'].apply(lambda x: pd.Timestamp(x).strftime('%Y-%m-%d')))

# 2. 生成基准日期范围
date_range = pd.date_range('2021-08-01', '2021-08-31').strftime('%Y-%m-%d')

# 3. 找出缺失的日期(自动去重原表的重复日期后比对)
exist_dates = dftickets['Data'].unique()
missing_dates = [d for d in date_range if d not in exist_dates]

# 4. 构造缺失日期的行,非日期列统一填0
missing_df = pd.DataFrame(missing_dates, columns=['Data'])
for col in dftickets.columns:
    if col != 'Data':
        missing_df[col] = 0

# 5. 把缺失行拼接回原表,重置索引避免索引重复
dftickets = pd.concat([dftickets, missing_df], ignore_index=True)

print(dftickets)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:27:03