在熊猫中转换为日期时间格式?

时间:2017-06-06 18:28:40

标签: python pandas datetime

我需要帮助转换为python / pandas日期时间格式。例如,我的时间保存如下:

2017-01-01 05:30:24.468911+00:00
.....
2017-05-05 01:51:31.351718+00:00

我想知道将此转换为日期时间格式的最简单方法,以便基本上按时间执行操作(例如,我的数据集将数据集按时间分成块的天数范围是什么,时间差是多少?一次到另一个)?如果让事情变得更容易,我不介意失去时代的一些重要性。非常感谢你!

3 个答案:

答案 0 :(得分:2)

我们说我有两个字符串2017-06-061944-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,而daystimedelta支持的最大解决方案: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)。您可以在该列上使用applyTimestamp

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)