首页 > 解决方案 > 如何在 pandas DataFrame 中将 int 转换为 datetime

问题描述

我有一个具有以下结构的熊猫数据框:

在此处输入图像描述

其中time属性/列表示对特定动物进行测量的某个时间点,用animal_id属性表示。x测量值是分别由属性和表示的 x 和 y 坐标y

我想time从 int 转换为 datetime 格式。但是当我执行以下操作时:

data['time'] = pd.to_datetime(data['time'])

输出:

data['time'][:10]

是:

0   1970-01-01 00:00:00.000000001
1   1970-01-01 00:00:00.000000001
2   1970-01-01 00:00:00.000000001
3   1970-01-01 00:00:00.000000001
4   1970-01-01 00:00:00.000000001
5   1970-01-01 00:00:00.000000002
6   1970-01-01 00:00:00.000000002
7   1970-01-01 00:00:00.000000002
8   1970-01-01 00:00:00.000000002
9   1970-01-01 00:00:00.000000002
Name: time, dtype: datetime64[ns]

我如何在此指定两件事:

  1. 开始日期而不是 1970-01-01 说 2019-05-10
  2. 从上面的输出中指定两次连续时间之间的差异,以说明分钟之间的差异

谢谢!

标签: pythonpandasdatetime

解决方案


用于to_timedelta分钟 timedeltas 和 add Timestamp,因为对于to_datetime带有参数的分钟origin并且unit未实现:

data = pd.DataFrame({'time':[1,1,2,2,3,4]})

data['time0'] = pd.to_timedelta(data['time'], unit='Min') + pd.Timestamp('2019-05-10')

data['time1'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='s')
data['time2'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='d')
print (data)

   time               time0               time1      time2
0     1 2019-05-10 00:01:00 2019-05-10 00:00:01 2019-05-11
1     1 2019-05-10 00:01:00 2019-05-10 00:00:01 2019-05-11
2     2 2019-05-10 00:02:00 2019-05-10 00:00:02 2019-05-12
3     2 2019-05-10 00:02:00 2019-05-10 00:00:02 2019-05-12
4     3 2019-05-10 00:03:00 2019-05-10 00:00:03 2019-05-13
5     4 2019-05-10 00:04:00 2019-05-10 00:00:04 2019-05-14

因为:

data['time0'] = pd.to_datetime(data['time'], origin='2019-05-10', unit='Min')

ValueError: 不能铸造单位 Min


推荐阅读