从这里的问题开始:
我正在尝试使用Rpy2
手动创建系列import rpy2.robjects as ro
from rpy2.robjects.packages import importr
import pandas.rpy.common as com
pa = importr("pa")
ro.r("data(jan)")
jan = com.load_data('jan')
jan_r = com.convert_to_r_dataframe(jan)
name = ro.StrVector([str(i) for i in jan['name']])
sector = ro.StrVector([str(i) for i in jan['sector']])
date = ro.StrVector([str(i) for i in jan['date']])
我在代表14610
的日期字段中得到2010-01-01
的日期编号,我怀疑这是1970-01-01
来源。我在datetime
模块中找不到任何可以更改日期来源的内容,但我不知道如何重置它。
我的问题:
1970-01-01
?datetime.datetime
对象?由于
答案 0 :(得分:3)
R来源的日期是
1970-01-01
?
来自?Date
:
日期表示为自1970-01-01以来的天数,早期日期为负值。
我在代表2010-01-01的日期字段中得到日期编号14610,我怀疑这是1970-01-01来源。
很怀疑。
as.Date(14610, origin = "1970-01-01")
## [1] "2010-01-01"
有没有办法在python中设置一个原点并隐藏到datetime.datetime对象?
Python datetime docs显示了几种构建日期的方法。
您可以使用datetime.date(year, month, day)
语法,可以使用year(x)
,month(x)
和mday(x)
从R日期检索这些值,其中x
代表您的日期向量。
您可以使用date.fromtimestamp(timestamp)
语法,其中可以使用format(x)
从R日期检索时间戳。
date.fromordinal(ordinal)
文档返回:
与公历序号对应的日期,第1年1月1日有序数1
因此,大概你的问题是你将日期作为数字传递,R计算为从1970年1月1日起的天数,而python假设是从0001年1月1日开始。
答案 1 :(得分:1)
好吧,但是如何在python中正确表达这个数字呢?
import datetime
pd.to_datetime(18402,unit='D', origin='1970-1-1')`
18402对应2020-05-20。参数 origin 是默认参数,因此可以跳过。