我需要帮助转换为python / pandas日期时间格式。例如,我的时间保存如下:
2017-01-01 05:30:24.468911+00:00
.....
2017-05-05 01:51:31.351718+00:00
我想知道将此转换为日期时间格式的最简单方法,以便基本上按时间执行操作(例如,我的数据集将数据集按时间分成块的天数范围是什么,时间差是多少?一次到另一个)?如果让事情变得更容易,我不介意失去时代的一些重要性。非常感谢你!
答案 0 :(得分:2)
我们说我有两个字符串2017-06-06
和1944-06-06
,我希望在两者之间找到差异(Python称之为timedelta
)。
首先,我需要import datetime
。然后我需要将这两个字符串都放到datetime
个对象中:
>>> a = datetime.datetime.strptime('2017-06-06', '%Y-%m-%d')
>>> b = datetime.datetime.strptime('1944-06-06', '%Y-%m-%d')
这将为我们提供两个可以在将返回timedelta
对象的算术函数中使用的日期时间对象:
>>> c = abs((a-b).days)
这将为我们提供26663
,而days
是timedelta
支持的最大解决方案:documentation
答案 1 :(得分:2)
Timestamp
会为您转换它。
>>> pd.Timestamp('2017-01-01 05:30:24.468911+00:00')
Timestamp('2017-01-01 05:30:24.468911+0000', tz='UTC')
假设您有一个包含时间戳列的数据框(我们称之为stamp
)。您可以在该列上使用apply
和Timestamp
:
df = pd.DataFrame(
{'stamp': ['2017-01-01 05:30:24.468911+00:00',
'2017-05-05 01:51:31.351718+00:00']})
>>> df
stamp
0 2017-01-01 05:30:24.468911+00:00
1 2017-05-05 01:51:31.351718+00:00
>>> df['stamp'].apply(pd.Timestamp)
0 2017-01-01 05:30:24.468911+00:00
1 2017-05-05 01:51:31.351718+00:00
Name: stamp, dtype: datetime64[ns, UTC]
您也可以使用Timeseries
:
>>> pd.TimeSeries(df.stamp)
0 2017-01-01 05:30:24.468911+00:00
1 2017-05-05 01:51:31.351718+00:00
Name: stamp, dtype: object
一旦拥有Timestamp对象,操作就非常有效。例如,您可以区分它们的值。
您可能还想查看此SO answer,其中讨论了时区无意识值。
答案 2 :(得分:1)
由于Pandas标签在那里:
df = pd.DataFrame(['2017-01-01 05:30:24.468911+00:00'])
df.columns = ['Datetime']
df['Datetime'] = pd.to_datetime(df['Datetime'], format='%Y-%m-%d %H:%M:%S.%f', utc=True)
print(df.dtypes)