如何向带时间索引的Pandas DataFrame追加一行数据
向带Datetime索引的Pandas DataFrame追加行的可行方案
方法1:构造Series并合并(适配新版Pandas,推荐)
Pandas的append()方法已被弃用,更稳妥的方式是将新数据转换为带索引的Series,再通过pd.concat()合并:
import pandas as pd from datetime import datetime as dtdt # 处理新数据格式 new_date = dtdt.strptime(bb, '%Y-%m-%d %H:%M:%S') # 分割数值字符串并转换对应类型 new_values = list(map(float, cc.split())) new_values[0] = int(new_values[0]) # 匹配原DataFrame列4的整数类型 # 构造与原DataFrame列名一致的Series new_row = pd.Series(new_values, index=df3.columns, name=new_date) # 合并生成新DataFrame new_df3 = pd.concat([df3, new_row.to_frame().T])
方法2:构造小型DataFrame合并
若习惯用DataFrame形式处理,可直接生成包含新行的小DataFrame再合并:
import pandas as pd from datetime import datetime as dtdt # 转换日期与数值格式 new_date = dtdt.strptime(bb, '%Y-%m-%d %H:%M:%S') new_values = list(map(float, cc.split())) new_values[0] = int(new_values[0]) # 构造小型DataFrame,匹配原DataFrame的索引与列名 new_sub_df = pd.DataFrame([new_values], index=[new_date], columns=df3.columns) # 合并数据 new_df3 = pd.concat([df3, new_sub_df])
验证结果
执行后new_df3将得到期望输出:
4 5 6 7 8 9 Date 2009-07-01 03:00:00 101 13.03 89.33 0.6 287.69 0 2009-07-01 06:00:00 102 19.30 55.00 1.0 288.67 0 2009-07-01 09:00:00 103 22.33 39.67 1.0 289.60 0 2009-07-01 12:00:00 104 21.97 41.00 1.0 295.68 0 2009-07-01 15:00:00 105 18.11 44.55 1.2 300.12 0
关键注意事项
- 确保新行的列名与原DataFrame完全一致,避免列错位或空值
- 日期必须转换为
datetime类型,与原索引类型匹配 - 数值类型要对应原列的类型(如整数列需转换为int)
内容的提问来源于stack exchange,提问作者user9393931
相关产品推荐
相关产品推荐

