Python 3.x 组合不同的日期和时间列以形成日期时间值

Python 3.x 组合不同的日期和时间列以形成日期时间值,python-3.x,pandas,datetime,Python 3.x,Pandas,Datetime,我正在尝试从创建YYYY-MM-DD HH:MM:SS AM/PM格式(例如2017-01-01 12:00:00 AM) A.DDMMMYYYY格式的日期列(例如2017年1月1日);和 B时间列的格式为HH:MM:SS AM/PM(例如,12:00:00 AM) (b)中的AM/PM似乎是最大的问题 我尝试了一些从堆栈溢出的方法 A.读取.csv(parse_dates=[['date','time]]),然后使用pd.to_datetime(df,格式='%d%b%Y%H:%M:%S')重

我正在尝试从创建YYYY-MM-DD HH:MM:SS AM/PM格式(例如2017-01-01 12:00:00 AM) A.DDMMMYYYY格式的日期列(例如2017年1月1日);和 B时间列的格式为HH:MM:SS AM/PM(例如,12:00:00 AM)

(b)中的AM/PM似乎是最大的问题

我尝试了一些从堆栈溢出的方法 A.读取.csv(parse_dates=[['date','time]]),然后使用pd.to_datetime(df,格式='%d%b%Y%H:%M:%S')重新排列日期时间列。 B在尝试连接两个函数之前,使用datetime函数和time函数将“date”转换为使用pd.time_delta的timedelta。 C循环() D编写解析器,然后将解析器与parse_dates=[['date','time']]一起包含到pd.read_csv命令中。()

a
df=pd.read_csv('a.csv',parse_dates=[['date','time']]))
df['datetime']=pd.to_datetime(df['datetime'],format=format='%d%b%Y%H:%M:%S)

b<代码>df=pd.read\u csv('a.csv')) df[“日期”]=pd.to_datetime(df[“日期”]) df[“Time”]=pd.to_timedelta(df[“Time”]) df[“DateTime”]=df[“Date”]+df[“Time”]

c。与链接中的代码相同

d。与链接中的代码相同


我收到了大量关于格式的错误消息,因为时间列在HH:MM:SS部分之后有AM或PM部分。

使用
将datetime
%I
用于解析小时,使用
%p
用于解析
AM/PM
。最后,如果需要在输出
AM/PM
中通过以下方式转换为字符串:


对不起,我有一个后续问题。如果我的日期第一次被转换为df['date\u actual']=pd.到_datetime(df['date\u actual'],格式='%d%b%Y'),这样我就可以按照日期优先将不同的数据帧合并在一起,从而生成2017-01-01。如何将其与包含诸如12:00:00 AM等值的时间列合并?我又试过了,但我觉得没用
df = pd.read_csv('a.csv')

print (df)
        Date         Time
0  01JAN2017  12:00:00 AM

df["DateTime"] = pd.to_datetime(df["Date"] + ' ' +df["Time"],  format='%d%b%Y %I:%M:%S %p')
df["DateTime_str"] = df["DateTime"].dt.strftime('%Y-%m-%d %I:%M:%S %p')
print (df)
        Date         Time   DateTime            DateTime_str
0  01JAN2017  12:00:00 AM 2017-01-01  2017-01-01 12:00:00 AM