首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日Int64转换为日期

问将日Int64转换为日期
EN

Stack Overflow用户
提问于 2018-04-15 10:24:27
回答 2查看 565关注 0票数 1

我需要将以下数据(天)转换为物理日期。(days=0)这是基准年01/01/1960。你能帮我把天列(从01/01/1960)转换成日期吗?

代码语言:javascript
复制
df=pd.DataFrame([-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366],columns=['days'])
df['base_year']=datetime.date(1960,1,1)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-15 10:29:54

回想起来,MaxU的答案更好。下面的内容对于旧版本的Pandas可能是有用的。

有几种方法可以做到这一点。一种是使用datetime.timedelta和列表理解:

代码语言:javascript
复制
from datetime import timedelta
import pandas as pd

>>> [pd.to_datetime('01/01/1960') + timedelta(d) for d in [-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366]]
[Timestamp('1958-01-01 00:00:00'),
 Timestamp('1958-04-01 00:00:00'),
 Timestamp('1958-07-01 00:00:00'),
 Timestamp('1961-04-02 00:00:00'),
 Timestamp('1959-01-01 00:00:00'),
 Timestamp('1960-10-02 00:00:00'),
 Timestamp('1959-07-01 00:00:00'),
 Timestamp('1959-10-01 00:00:00'),
 Timestamp('1960-01-01 00:00:00'),
 Timestamp('1960-04-01 00:00:00'),
 Timestamp('1960-07-01 00:00:00'),
 Timestamp('1960-10-01 00:00:00'),
 Timestamp('1961-01-01 00:00:00')]

所以你可以用

代码语言:javascript
复制
>>> DataFrame([pd.to_datetime('01/01/1960') + timedelta(d) for d in [-730,-640,-549,457,-365,275,-184,-92,0,91,182,274,366]],columns=['days'])
    days
0   1958-01-01
1   1958-04-01
2   1958-07-01
3   1961-04-02
4   1959-01-01
5   1960-10-02
6   1959-07-01
7   1959-10-01
8   1960-01-01
9   1960-04-01
10  1960-07-01
11  1960-10-01
12  1961-01-01
票数 2
EN

Stack Overflow用户

发布于 2018-04-15 10:40:52

您可以使用相对较新的特性(在Pandas0.20.0中添加)- origin of pd.to_datetime()

代码语言:javascript
复制
In [44]: df['date'] = pd.to_datetime(df['days'], origin='1960-01-01', unit='D')

In [45]: df
Out[45]:
    days       date
0   -730 1958-01-01
1   -640 1958-04-01
2   -549 1958-07-01
3    457 1961-04-02
4   -365 1959-01-01
5    275 1960-10-02
6   -184 1959-07-01
7    -92 1959-10-01
8      0 1960-01-01
9     91 1960-04-01
10   182 1960-07-01
11   274 1960-10-01
12   366 1961-01-01

来自文档

原点:标量,默认为‘unix’ 定义参考日期。自此参考日期起,数值将被解析为单位数(按单位定义)。 如果“unix”(或POSIX)时间;原点设置为1970-01-01。如果“朱利安”,单位必须是‘D’,起源被设置为朱利安日历的开始。 朱利安第0天被指定为1月中午开始的一天。 公元前14713年。如果时间戳可转换,则原点设置为由原产地标识的时间戳。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49840868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档