У меня есть некоторый код в Python, который генерирует фрейм данных с датами на основе пакета R (timeDate), но я не могу преобразовать дату / время только в дату (исключая часть времени).
Я попытался использовать as.Date и вместо генерации даты генерирует число.Я запустил тот же код в R напрямую (убедившись, что это тот, что использует rpy2), и он правильно генерирует даты.Но в rpy2 это не работает.Версия R - 3.5.1, а Python - 3.7.0.
import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
pandas2ri.activate()
ro.r('library(timeDate)')
ro.r('df <- data.frame(holiday="USChristmasDay", date=USChristmasDay(2010:2025))')
ro.r("names(df) <- c('holiday', 'date')")
ro.r("df$year = as.integer(format(df$date, '%Y'))")
ro.r("df$date_str = format(df$date, '%Y-%m-%d')")
ro.r("df$date_dt = as.Date(df$date, '%Y-%m-%d')")
ro.r("df$date_dt2 = as.Date(df$date_str, '%Y-%m-%d')")
ro.r("df$date_dt3 = as.Date(format(df$date, '%Y-%m-%d'), '%Y-%m-%d')")
ro.r("df$date_dt4 = as.Date(df$date, tz='America/Los_Angeles')")
df = ro.r('df')
print(df)
USChristmasDay - это функция, которая возвращает вектор всех дат Рождества между указанными годами.
Date_str правильно отображается в указанном формате.При непосредственном запуске в R я получаю даты, которые отображаются как 2025-12-25 во всех четырех столбцах dt.Я ожидаю того же в python с rpy2, но вместо этого я получаю числа типа 20447.0 во всех четырех столбцах.