Python 拆分日期时间字符串(不是通常的格式)并拉出月份

Python 拆分日期时间字符串(不是通常的格式)并拉出月份,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有一个数据框,它有一个日期时间字符串,但不是传统的日期时间格式。我想把日期和时间分为两列。然后最终也把这个月分开 这是日期/时间字符串的外观:2019-03-20T16:55:52.981-06:00 >>> df.head() Date Score 2019-03-20T16:55:52.981-06:00 10 2019-03-07T06:16:52.174-07:00 9 2019-06-17T04:3

我有一个数据框,它有一个日期时间字符串,但不是传统的日期时间格式。我想把日期和时间分为两列。然后最终也把这个月分开

这是日期/时间字符串的外观:
2019-03-20T16:55:52.981-06:00

>>> df.head()
Date                             Score
2019-03-20T16:55:52.981-06:00    10
2019-03-07T06:16:52.174-07:00    9
2019-06-17T04:32:09.749-06:003   1
我尝试了此操作,但出现了一个类型错误:

df['Month'] = pd.DatetimeIndex(df['Date']).month

这只需使用
pandas
本身即可完成。通过传递
utc=True
,可以首先将
Date
列转换为
datetime

df['Date'] = pd.to_datetime(df['Date'], utc = True)
然后使用
dt.month
提取月份:

df['Month'] = df['Date'].dt.month
输出:

                              Date  Score  Month
0 2019-03-20 22:55:52.981000+00:00     10      3
1 2019-03-07 13:16:52.174000+00:00      9      3
2 2019-06-17 10:32:09.749000+00:00      1      6

从的文档中可以看到一个参数:

utc:布尔值,默认为无

如果为True,则返回UTC DatetimeIndex(同时转换任何tz感知的datetime.datetime对象)


这只需使用
pandas
本身即可完成。通过传递
utc=True
,可以首先将
Date
列转换为
datetime

df['Date'] = pd.to_datetime(df['Date'], utc = True)
然后使用
dt.month
提取月份:

df['Month'] = df['Date'].dt.month
输出:

                              Date  Score  Month
0 2019-03-20 22:55:52.981000+00:00     10      3
1 2019-03-07 13:16:52.174000+00:00      9      3
2 2019-06-17 10:32:09.749000+00:00      1      6

从的文档中可以看到一个参数:

utc:布尔值,默认为无

如果为True,则返回UTC DatetimeIndex(同时转换任何tz感知的datetime.datetime对象)


您的
Date
列是字符串还是datetime对象?对我来说很有用。请你把错误发出来好吗?嗯,那是传统的日期时间格式。也就是说,除了最后一行的额外
3
。那是打字错误吗?或者您的字符串实际上包含
-06:003
?如果是,这意味着什么?另请参见:您的
Date
列是字符串还是datetime对象?它对我有用。请你把错误发出来好吗?嗯,那是传统的日期时间格式。也就是说,除了最后一行的额外
3
。那是打字错误吗?或者您的字符串实际上包含
-06:003
?如果是,这意味着什么?另请参见:这解决了它。我需要转换成datetime。非常感谢。这就解决了问题。我需要转换成datetime。非常感谢。