如何用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
相关产品推荐
相关产品推荐

