如何将DataFrame中多列合并为Pandas datetime格式?
合并多列为Pandas Datetime格式的方法
当然没问题!有几种简洁高效的方式可以把你的Date、Month、Year和Time列合并成Pandas的datetime64格式,下面给你详细演示:
方法1:直接传入列组合(推荐)
从Pandas 0.18版本开始,pd.to_datetime()支持直接传入包含年、月、日、时间信息的列组成的DataFrame,Pandas会自动识别并合并成datetime格式,这是最省心的方式:
import pandas as pd # 先构造你的示例DataFrame data = { 'ProcessID1': [248, 436, 500], 'UserID': ['Tony', 'Jeff', 'Greg'], 'Date': [29, 28, 4], 'Month': [4, 4, 5], 'Year': [2017, 2017, 2017], 'Time': ['23:30:56', '20:02:19', '11:48:29'] } df = pd.DataFrame(data) # 合并列生成Datetime列 df['Datetime'] = pd.to_datetime(df[['Year', 'Month', 'Date', 'Time']])
运行后,df['Datetime']的类型就是datetime64[ns],你可以通过print(df['Datetime'].dtype)验证。
方法2:手动拼接字符串后转换
如果你使用的是较旧版本的Pandas,或者需要更灵活的格式控制,可以先把各列拼接成标准的日期时间字符串,再转换为datetime:
# 把年、月、日转成字符串,确保月/日是两位数(比如4→04),再拼接时间 df['Datetime'] = pd.to_datetime( df['Year'].astype(str) + '-' + df['Month'].astype(str).str.zfill(2) + '-' + df['Date'].astype(str).str.zfill(2) + ' ' + df['Time'] )
这里的str.zfill(2)是为了保证月份和日期始终是两位数,避免出现2017-4-29这种不标准的格式导致解析失败。
验证结果
处理完成后,你的DataFrame会新增一列Datetime,内容如下:
0 2017-04-29 23:30:56 1 2017-04-28 20:02:19 2 2017-05-04 11:48:29 Name: Datetime, dtype: datetime64[ns]
内容的提问来源于stack exchange,提问作者Jithesh Erancheri
相关产品推荐
相关产品推荐

