特定ISO格式的Pandas日期时间转换

时间:2018-12-06 18:42:07

标签: python pandas datetime dataframe

非常感谢您的提前帮助。

我正尝试将ISO格式的字符串datetime转换为datetime对象。但是尝试了许多方法却没有成功。请为此提供帮助。

作为一个例子,我有一个数据帧,其列时间如下所示。这是从数据库中提取的,这是输出的格式。

2018-12-04T04:39:26Z
2018-12-04T05:10:54.6Z
2018-12-04T05:17:32Z
2018-12-04T10:51:20.5Z
...

到目前为止,我已经尝试过(多次尝试)但没有成功:

df.index = pd.to_datetime(df.index, format = "%Y-%m-%dT%H:%M:%SZ", errors='ignore')

df.index = pd.to_datetime(df.index)

df.time = df.time.map(lambda x: pd.to_datetime(dt.datetime.strptime(x, '%Y-%m-%dT%H:%M:%SZ'), format = '%d/%m/%Y %H:%M'))

再次感谢!

2 个答案:

答案 0 :(得分:0)

我以前想回答这个问题。最后,我只做了一个处理不同数据输入并创建带有列名的数据框的函数。感谢ALollz对pd.to_datetime(df.index,errors ='coerce')的评论。

因此要以我建立的ISO格式从字符串转换索引,并遵循以下顺序:

df = pd.DataFrame([[-1.8, '2018-09-14T13:36:00Z']], columns = ['current', 'time'])
df.set_index('time', inplace = True)   # make it your index by using the inplace=True
df.index = pd.to_datetime(df.index, errors='coerce')

转换为日期时间后,请检查日期是否正确。如果读取错误,则可能需要指定格式。

谢谢!

答案 1 :(得分:0)

晚会晚了一点,但我认为这种反应对于减轻人们的生活是必需的。

如果正如您所说,它是从数据库中提取的,那么您可以在建立数据框时直接进行操作。大多数熊猫读取函数都有一个参数parse_dates。如documentation中所述:

注意:存在iso8601格式日期的快速路径。

因此,即使您有2列或更多列带有日期,您也可以以非常简单的方式进行操作。

df = pd.read_csv("x.csv", parse_dates=['Date1', "Date2"], names=["ID", "Date1", "Date2"])