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

如何用Python Pandas将列中时间戳替换为最近日期值

解决方案:填充Pandas DataFrame中的日期值

方法一:利用日期转换识别并填充

import pandas as pd

# 初始化DataFrame
df = pd.DataFrame(
    ["7/12/2022","3:47:57AM"," 3:47:58AM","3:51:27AM","3:52:06AM",
     "7/13/2022","4:18:20AM","4:19:05AM","4:25:51AM","4:27:50AM"],
    columns=['Date']
)

# 将非日期值转为NaN,有效日期保留原格式
df['Date'] = pd.to_datetime(df['Date'], errors='coerce').dt.strftime('%m/%d/%Y')

# 向前填充NaN值,用最近的日期替换后续行
df['Date'] = df['Date'].ffill()

print(df)

方法二:通过字符串特征识别日期行

如果你的日期格式固定包含斜杠,也可以直接通过字符串匹配来标记日期行:

import pandas as pd

df = pd.DataFrame(
    ["7/12/2022","3:47:57AM"," 3:47:58AM","3:51:27AM","3:52:06AM",
     "7/13/2022","4:18:20AM","4:19:05AM","4:25:51AM","4:27:50AM"],
    columns=['Date']
)

# 标记包含斜杠的行(日期行),其他行设为NaN
mask = df['Date'].str.contains('/', na=False)
df['Date'] = df['Date'].where(mask).ffill()

print(df)

关键逻辑说明

  • pd.to_datetime(..., errors='coerce'):尝试转换所有值为日期时间,无法转换的时间戳会变成NaT,后续通过strftime转回原日期字符串格式。
  • ffill():全称forward fill,会将每个缺失值(NaN)替换为上一个非缺失值,正好实现"用最近的日期填充后续行直到下一个日期出现"的需求。
  • where(mask):仅保留mask为True的行值,其余设为NaN,再配合ffill()完成填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:05:34