如何正确转换Pandas DataFrame中指定格式的日期时间数据
日期时间列转datetime类型解决方案
你现有的Date/Time列格式为mm/dd HH:MM:SS,缺少年份字段,直接调用无参数的pd.to_datetime会出现两种问题:要么pandas自动填充当前系统年份导致时间不符合实际业务,要么格式匹配失败,转换后还是字符串类型。
按以下步骤处理即可:
- 先补全缺失的年份信息:如果你的所有数据都属于同一个年份(比如2024年),直接给日期字段拼接上年份前缀即可
# 按需替换成你实际对应的年份 df1['Date/Time'] = '2024/' + df1['Date/Time'].str.strip()
如果你的数据跨多个年份,且数据是按时间升序排列的,可以判断月日从12/31切换到01/01时自动递增年份,示例代码如下:
current_year = 2023 # 替换为数据起始年份 years = [] prev_month = None for idx, date_str in df1['Date/Time'].items(): month = int(date_str.split('/')[0]) if prev_month is not None and month < prev_month: current_year += 1 years.append(str(current_year)) prev_month = month df1['Date/Time'] = [y + '/' + d.strip() for y, d in zip(years, df1['Date/Time'])]
- 之后指定格式调用
pd.to_datetime完成转换,指定格式既可以避免识别错误,还能大幅提升转换速度
df1['Date/Time'] = pd.to_datetime(df1['Date/Time'], format='%Y/%m/%d %H:%M:%S')
- 验证转换结果,执行以下代码如果输出
datetime64[ns]即为转换成功
print(df1['Date/Time'].dtype)
内容的提问来源于stack exchange,提问作者Loai Alnouri
相关产品推荐
相关产品推荐

