【发布时间】:2020-08-05 17:12:49
【问题描述】:
我正在尝试使用 rpy2 将 python 数据帧转换为 r,但我无法将 python 数据帧中的日期转换为 r 数据帧中的日期类型。
将pd.to_datetime() 转换为 r 数据帧时,我没有得到正确的转换。
有问题的df日期列:
event_time
0 2019-10-11
1 2020-01-01
2 2019-11-15
3 2020-03-05
转换代码:
with localconverter(ro.default_converter + pandas2ri.converter):
df['event_time'] = pd.to_datetime(df['event_time']).dt.strftime("%Y-%m-%d")
df["event_time"] = pd.to_datetime(df["event_time"]).dt.date
r_df = ro.conversion.py2rpy(df)
生产:
event_time: <class 'numpy.ndarray'>
array([737343., 737425., 737378., 737489.])
discharge_time 也是如此。
用字符串转换代码,然后尝试转换:
with localconverter(ro.default_converter + pandas2ri.converter):
df['event_time'] = pd.to_datetime(df['event_time']).dt.strftime("%Y-%m-%d")
#### df["event_time"] = pd.to_datetime(df["event_time"]).dt.date
r_df = ro.conversion.py2rpy(df)
r_df = base.cbind(r_df, event_time = base.as_Date(r_df[r_df.names.index('event_time')], '%Y-%m-%d'))
产生一个数据框:
event_time: <class 'numpy.ndarray'>
array(['2019-10-11', '2020-01-01', '2019-11-15', '2020-03-05'], dtype='<U10')
但是这行代码r_df = base.cbind(r_df, event_time = base.as_Date(r_df[r_df.names.index('event_time')], '%Y-%m-%d')) 错误:
AttributeError: 'numpy.ndarray' 对象没有属性 'index'
使用此代码产生:
with localconverter(ro.default_converter + pandas2ri.converter):
df['event_time'] = pd.to_datetime(df['event_time']).dt.strftime("%Y-%m-%d")
#### df["event_time"] = pd.to_datetime(df["event_time"]).dt.date
r_df = ro.conversion.py2rpy(df)
r_df = base.cbind(r_df, event_time = base.as_Date(r_df[r_df.rx2('event_time')], '%Y-%m-%d'))
错误:
没有为“
'
那么如何使用 rpy2 将 python 数据框中的日期转换为 r 中的日期?我需要日期格式,因为我稍后会进行日期计算,而字符串将不起作用。
版本:
熊猫==1.0.1
rpy2~=3.3.5
【问题讨论】: