Python 多个日期时间到一个
Python Multiple Datetimes To One
我在 Dataframe 中有两种类型的日期时间格式。
Date
2019-01-06 00:00:00 (%Y-%d-%m %H:%M:%S')
07/17/2018 ('%m/%d/%Y')
我想转换成一种特定的日期时间格式。下面是我正在使用的脚本
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date'] = d2.fillna(d1)
在执行此操作时,代码会将其他一些日期时间合并到另一个日期时间中。例如:2018 年 1 月 7 日是 2018 年 7 月 1 日。此问题与上述脚本 运行 之后的格式 (%Y-%d-%m %H:%M:%S') 有关。
如果格式 2019-01-06 00:00:00
中也有混合格式 - 这意味着它应该是一月或六月,唯一的方法是优先考虑一种格式 - 例如在这里头几个月,添加第一个格式 d2
然后 d3
链接 fillna
:
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%m-%d %H:%M:%S',errors='coerce')
d3 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date'] = d2.fillna(d1).fillna(d3)
如果需要优先考虑第一天:
df1['Date'] = d3.fillna(d1).fillna(d2)
在示例数据中可以检查差异:
print (df1)
DATE
0 2019-01-06 00:00:00
1 2019-01-15 00:00:00
2 2019-20-10 00:00:00
3 07/17/2018
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%m-%d %H:%M:%S',errors='coerce')
d3 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date1'] = d2.fillna(d1).fillna(d3)
df1['Date2'] = d3.fillna(d1).fillna(d2)
print (df1)
DATE Date1 Date2
0 2019-01-06 00:00:00 2019-01-06 2019-06-01 <- difference
1 2019-01-15 00:00:00 2019-01-15 2019-01-15
2 2019-20-10 00:00:00 2019-10-20 2019-10-20
3 07/17/2018 2018-07-17 2018-07-17
我在 Dataframe 中有两种类型的日期时间格式。
Date
2019-01-06 00:00:00 (%Y-%d-%m %H:%M:%S')
07/17/2018 ('%m/%d/%Y')
我想转换成一种特定的日期时间格式。下面是我正在使用的脚本
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date'] = d2.fillna(d1)
在执行此操作时,代码会将其他一些日期时间合并到另一个日期时间中。例如:2018 年 1 月 7 日是 2018 年 7 月 1 日。此问题与上述脚本 运行 之后的格式 (%Y-%d-%m %H:%M:%S') 有关。
如果格式 2019-01-06 00:00:00
中也有混合格式 - 这意味着它应该是一月或六月,唯一的方法是优先考虑一种格式 - 例如在这里头几个月,添加第一个格式 d2
然后 d3
链接 fillna
:
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%m-%d %H:%M:%S',errors='coerce')
d3 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date'] = d2.fillna(d1).fillna(d3)
如果需要优先考虑第一天:
df1['Date'] = d3.fillna(d1).fillna(d2)
在示例数据中可以检查差异:
print (df1)
DATE
0 2019-01-06 00:00:00
1 2019-01-15 00:00:00
2 2019-20-10 00:00:00
3 07/17/2018
d1 = pd.to_datetime(df1['DATE'], format='%m/%d/%Y',errors='coerce')
d2 = pd.to_datetime(df1['DATE'], format='%Y-%m-%d %H:%M:%S',errors='coerce')
d3 = pd.to_datetime(df1['DATE'], format='%Y-%d-%m %H:%M:%S',errors='coerce')
df1['Date1'] = d2.fillna(d1).fillna(d3)
df1['Date2'] = d3.fillna(d1).fillna(d2)
print (df1)
DATE Date1 Date2
0 2019-01-06 00:00:00 2019-01-06 2019-06-01 <- difference
1 2019-01-15 00:00:00 2019-01-15 2019-01-15
2 2019-20-10 00:00:00 2019-10-20 2019-10-20
3 07/17/2018 2018-07-17 2018-07-17