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

如何拆分DataFrame混合日期时间列并转换日期格式?

解决混合日期时间列的拆分与格式转换问题

没问题,我来帮你搞定这个需求!你的DataFrame里Date列混合了完整日期和单独时间,我们可以分步骤处理,既拆分出独立的日期、时间列,又把日期转换成你要的格式。

步骤1:准备示例数据

先把你的示例DataFrame创建出来:

import pandas as pd

data = pd.DataFrame()
data ['Date'] = ['Saturday 20th April 2019','12:30:00','12:30:00','15:00:00']
data ['Name'] = ['A','B','C','D']

步骤2:拆分并格式化日期列(Date1)

我们需要先识别出包含完整日期的行,将其转换成dd-mm-yyyy格式,再通过向前填充让下方的时间行继承最近的日期:

# 1. 将日期行转为datetime类型,非日期行自动设为NaN
data['Date1'] = pd.to_datetime(data['Date'], errors='coerce')
# 2. 将datetime格式转成你需要的dd-mm-yyyy字符串
data['Date1'] = data['Date1'].dt.strftime('%d-%m-%Y')
# 3. 向前填充,让时间行获取上方最近的有效日期
data['Date1'] = data['Date1'].ffill()

步骤3:提取时间列(Time)

接下来提取单独的时间值,只保留包含冒号的时间格式行,其他行设为空字符串:

# 判断每行是否为时间格式(含冒号),是则保留原内容,否则为空
data['Time'] = data['Date'].where(data['Date'].str.contains(':'), '')

最终结果

运行完上述代码后,你的DataFrame会变成这样:

DateNameDate1Time
0Saturday 20th April 2019A20-04-2019
112:30:00B20-04-201912:30:00
212:30:00C20-04-201912:30:00
315:00:00D20-04-201915:00:00

补充说明

  • pd.to_datetime(..., errors='coerce')能把非日期格式的字符串转为NaN,方便后续筛选和填充操作;
  • ffill()向前填充的逻辑,适配你的场景:时间行默认属于上方最近的日期,即使数据里有多个日期块(多组日期+时间行)也能正常工作;
  • 如果希望时间列的空值用NaN而非空字符串,只需把代码里的''替换成pd.NA即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:14:03