我正在尝试从以下位置创建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部分。
答案 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