非常感谢您的提前帮助。
我正尝试将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'))
再次感谢!
答案 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"])