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

Pandas 2.2.0如何无字符串拼接合并日期时间列?

问题描述

我的CSV文件示例如下:

date, time, value
20240112,085917,11
20240112,085917,22

我之前用以下代码将其导入DataFrame:

df = pd.read_csv(csv_file, parse_dates=[['date', 'time']]).set_index('date_time')

得到的结果结构如下:

date_time             value
2023-10-02 10:00:00   11
2023-10-02 10:01:00   22

升级到Pandas 2.2.0后,收到了如下警告:

FutureWarning: Support for nested sequences for 'parse_dates' in pd.read_csv is deprecated. Combine the desired columns with pd.to_datetime after parsing instead.

现在我只能通过字符串拼接的方式实现相同效果,但这种方法速度通常很慢:

df['datetime'] = df.date.astype(str) + ' ' + df.time.astype(str)
df['datetime'] = pd.to_datetime(df.datetime, format="%Y%m%d %H%M%S")
df = df.drop(['date', 'time'], axis=1).set_index('datetime')

请问在新版Pandas中,有没有无需字符串拼接的实现方法?


解决方案

有,你可以直接利用pd.to_datetime接收多列参数的特性,避免字符串拼接,效率会高很多:

df = pd.read_csv(csv_file)
df['datetime'] = pd.to_datetime(df[['date', 'time']], format="%Y%m%d %H%M%S")
df = df.drop(['date', 'time'], axis=1).set_index('datetime')

这个方法让pd.to_datetime直接处理两列的数值,内部会高效合并日期和时间信息,不需要手动做字符串拼接。

如果偏好链式写法,也可以一步完成导入和索引设置:

df = (pd.read_csv(csv_file)
      .assign(datetime=pd.to_datetime(df[['date', 'time']], format="%Y%m%d %H%M%S"))
      .drop(['date', 'time'], axis=1)
      .set_index('datetime'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:04:59