python - 如何在 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]
我如何在此指定两件事:
- 开始日期而不是 1970-01-01 说 2019-05-10
- 从上面的输出中指定两次连续时间之间的差异,以说明分钟之间的差异
谢谢!
解决方案
用于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
推荐阅读
- python - 解析 xml 网页时“查找”方法 (BeautifulSoup) 的问题
- firebase - 颤振 | 在构建小部件之前从 Firestore 检索数据
- linux - Oops 和 objdump 中的 linux 内核函数长度(反汇编)
- node.js - 我无法更改 Azure 中的节点版本
- swift - 重复 Swift 计时器会产生 SIGABRT 错误
- android - 将 androidx.appcompat:appcompat 更新到 1.1.0 版后崩溃 IllegalStateException
- reactjs - 当可空值更改为未定义时,将 Formik 的脏状态重置为“假”
- android - 正确保存和删除文件 - Android
- typescript - 嵌套数组中的元素没有准确的类型
- apache-kafka - 自 5.1.3 版以来,KSQL 的引用行为是否发生了变化?