组合不同的日期和时间列以形成日期时间值

时间:2019-06-14 09:35:07

标签: python-3.x pandas datetime

我正在尝试从以下位置创建YYYY-MM-DD HH:MM:SS AM / PM格式(例如2017年1月1日12:00:00 AM) 一种。 DDMMMYYYY格式的日期列(例如01JAN2017);和 b。 HH:MM:SS AM / PM(例如12:00:00 AM)格式的时间列。

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

我从堆栈溢出尝试了几种方法 一种。 read.csv(parse_dates = [['date','time]]),然后使用pd.to_datetime(df,format ='%d%b%Y%H:%M:重新排列日期时间列: %S')。 b。在尝试将两者连接之前,请使用pd.time_delta将使用datetime函数的“ date”和“ time”函数转换为timedelta。 C。循环播放(Combine date and time columns using datetime) d。编写一个解析器,然后将解析器与parse_dates = [['date','time']]一起包含到pd.read_csv命令中。 (Convert string date time to pandas datetime

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_csv('a.csv') df["Date"] = pd.to_datetime(df["Date"]) df["Time"] = pd.to_timedelta(df["Time"]) df["DateTime"] = df["Date"] + df["Time"]

c。与链接中的代码相同

d。与链接中的代码相同

我收到了很多格式错误消息,因为时间列的HH:MM:SS部分后面是AM或PM部分。

1 个答案:

答案 0 :(得分:1)

使用to_datetime%I来解析12H格式的小时,并使用%p来解析AM/PM。最后,如果需要在输出AM/PM中将Series.dt.strftime转换为字符串:

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