我需要帮助将日期时间转换为python/pandas格式。例如,我的时间保存在以下行中:
2017-01-01 05:30:24.468911+00:00
.....
2017-05-05 01:51:31.351718+00:00
我想知道将此转换为日期时间格式的最简单方法,以便执行与时间有关的操作(例如,我的数据集的天数范围是多少,以时间为基础将数据集拆分成块,一个时间到另一个时间的时间差是多少)?如果这样做可以使事情更容易,我不介意失去一些时间的重要性。非常感谢!
2017-06-06
和1944-06-06
,我想要获取它们之间的差异(Python中称为timedelta
)。首先,我需要导入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
支持的最大分辨率:文档
>>> 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]
时间序列
:>>> 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
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)
strptime()
将所指示的时间拆分成一个对象,并对这些对象的成员进行操作。对象的成员将由您传递到该方法中的格式化字符串来确定。有关更多信息,请参见此文档。 - nerdenator