python - 如何将“float64”转换为熊猫数据框中的时间戳
问题描述
这是我的数据
id enter_time
1 1.481044e+12
2 1.486d74e+12
这是我的预期输出
id enter_time enter_timestamp
1 1.481044e+12 2017-07-14 08:10:03
2 1.486774e+12 2017-07-15 08:10:00
注意:上面预期的“enter_timestamp”中的值是假的,它只是为了给出预期格式的想法,下面是额外的信息,以防需要回答
In : main['enter_time'].dtype
Out: dtype('float64')
我已经尝试过的
import datetime
main['loan_timestamp'] = datetime.datetime.fromtimestamp(main['loan_time'])
和输出
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-cfe2d514debb> in <module>
1 import datetime
----> 2 main['loan_timestamp'] = datetime.datetime.fromtimestamp(main['loan_time'])
/opt/conda/lib/python3.8/site-packages/pandas/core/series.py in wrapper(self)
127 if len(self) == 1:
128 return converter(self.iloc[0])
--> 129 raise TypeError(f"cannot convert the series to {converter}")
130
131 wrapper.__name__ = f"__{converter.__name__}__"
TypeError: cannot convert the series to <class 'int'>
解决方案
尝试使用 pandas to_datetime() (我假设您的第二个输入浮点数中的字符 'd' 是一个错字,所以我替换了它):
import pandas as pd
df = pd.DataFrame([(1, 1.481044e+12), (2, 1.48674e+12)], columns=['id', 'enter_time'])
df['enter_timestamp'] = pd.to_datetime(df['enter_time'], unit='ms')
df
id enter_time enter_timestamp
0 1 1.481044e+12 2016-12-06 17:06:40
1 2 1.486740e+12 2017-02-10 15:20:00
我假设 enter_time 的单位是毫秒,因为秒或更高会导致 OutOfBoundsError (熊猫时间戳的基本限制)。
推荐阅读
- c++ - 具有多个参数的 masm x64 上的 Printf
- forms - 从一个表单中插入同一个实体 3 次
- arrays - array3d 和 array2d 之间的荒谬性能差异
- android - 如何使用实现 'com.google.firebase:firebase-auth:16.0.3:15.0.0' 不起作用
- reactjs - 如何使用 GraphQL、Firebase 和 Gatsby 查询关系数据
- angularjs - 为多个数组动态添加输入
- html - 对齐卡片内的复选框
- apache-kafka - 如何发现和过滤 Kafka Streams 中的重复记录
- python-3.x - 等待 db future 完成?
- microsoft-cognitive - Bing Web Search v7 结果不一致