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

如何向以日期为索引的Pandas DataFrame追加行?

针对你这种用日期做索引的Pandas DataFrame,要追加新行其实很简单,调整一下方法就行,我给你几个实用的方案:

方案1:用pd.concat追加(推荐,兼容性强)

这是最稳妥的方式,尤其是需要保证索引类型和原DataFrame一致的时候:

import pandas as pd

# 定义要追加的新日期和对应值
new_date = pd.to_datetime('2011-10-29')
new_entry = 19

# 构造单行的新DataFrame,索引设置为日期
new_row = pd.DataFrame({'entry': [new_entry]}, index=[new_date])

# 合并原DataFrame和新行
df = pd.concat([df, new_row])

这种方法不会破坏原DataFrame的结构,哪怕后续要追加多列或者多行都能轻松扩展。

方案2:直接用loc赋值(单行追加更简洁)

如果只是加一行,用loc直接通过日期索引标签赋值更高效:

# 显式转换日期为datetime类型,确保和原索引匹配
df.loc[pd.to_datetime('2011-10-29')] = 19

⚠️ 注意:一定要确保新日期的类型和原索引一致(用df.index.dtype可以查看原索引类型),否则会把索引转为object类型,后续时间相关的操作会出问题。

方案3:批量追加多行

如果有好几行要加,可以先整理成数据列表,再转成DataFrame合并:

# 准备批量数据
new_rows_data = [
    {'date': '2011-10-29', 'entry': 19},
    {'date': '2011-10-30', 'entry': 20},
    {'date': '2011-10-31', 'entry': 21}
]

# 转成DataFrame并设置日期索引
new_df = pd.DataFrame(new_rows_data).set_index('date')
# 统一索引类型为datetime
new_df.index = pd.to_datetime(new_df.index)

# 合并到原DataFrame
df = pd.concat([df, new_df])

重要提醒

别再用df.append()方法了——Pandas已经把它标记为弃用(deprecated)了,官方明确推荐用pd.concat来替代,避免后续版本兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:27