![](/img/trans.png)
[英]Convert pandas column of Object dtype into time datetime (with micro seconds)
[英]Convert datetime column in seconds (?) to pandas date time
我有以下内容:
import pandas as pd
import io
s = pd.read_csv(
io.StringIO(",Unnamed: 0,date\n0,0,13837781820.0\n1,1,13837781880.0\n")
)["date"]
我不知道日期应该是什么
pd.to_datetime(s)
返回
0 1970-01-01 00:00:13.837781820
1 1970-01-01 00:00:13.837781880
Name: date, dtype: datetime64[ns]
这是错误的。
from datetime import datetime
datetime.fromtimestamp(s[0])
返回
datetime.datetime(2408, 7, 2, 13, 17)
这是错误的。
添加一些更具体的东西 -
我希望:
13838574120.0
转换为
2021-04-23 16:22:00
如果我的猜测是正确的,那么你所拥有的是从 1582 年 10 月 14 日开始的秒数。在 Unix 世界中表示日期的常用方法是从 1970 年 1 月 1 日开始的秒数,所以如果我们能以秒为单位找到这些日期之间的差异,我们可以从你拥有的数字中减去那个数字,然后从那里取出。
为了找出不同之处,我们可以坐下来拿着纸笔认真思考闰年的规则,或者我们可以让计算机为我们做这项工作:
import datetime
# This really should be zero, but just for good measure...
unix_epoch = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
assert unix_epoch.timestamp() == 0
lilian_epoch = datetime.datetime(1582, 10, 14, tzinfo=datetime.timezone.utc)
delta = unix_epoch.timestamp() - lilian_epoch.timestamp()
现在让我们用你的样品日期试试
print(datetime.datetime.fromtimestamp(13838574120.0 - delta))
# prints 2021-04-23 18:22:00
为什么要休息两个小时? 我在斯德哥尔摩, fromtimestamp
给出了当地时间,但时间戳值应该是 UTC。 你必须以某种方式调整时区。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.