【发布时间】:2020-06-22 06:22:16
【问题描述】:
我正在尝试使用 rpy2 将 R 数据帧转换为 python
with localconverter(ro.default_converter + pandas2ri.converter):
smogned = ro.conversion.rpy2py(smogned)
print('after pandas2ri')
print(type(smogned))
print(smogned.shape)
print(smogned.dtype)
这给了我以下内容
after pandas2ri
<class 'numpy.recarray'>
(7412,)
(numpy.record, [('WS', '<f8'), ('WS_1', '<f8'), ('WS_2', '<f8'), ('WS_3', '<f8'), ('WS_4', '<f8'), ('WS_5', '<f8'), ('RH', '<f8'), ('RH_1', '<f8'), ('RH_2', '<f8'), ('RH_3', '<f8'), ('RH_4', '<f8'), ('RH_5', '<f8'), ('TA', '<f8'), ('TA_1', '<f8'), ('TA_2', '<f8'), ('TA_3', '<f8'), ('TA_4', '<f8'), ('TA_5', '<f8'), ('gridMET_ETr', '<f8'), ('Site_Id_1', '<f8'), ('Site_Id_2', '<f8'), ('Site_Id_3', '<f8'), ('Site_Id_4', '<f8'), ('Site_Id_5', '<f8'), ('Site_Id_6', '<f8'), ('Vegetation_1', '<f8'), ('Vegetation_2', '<f8'), ('Vegetation_3', '<f8'), ('Month_1', '<f8'), ('Month_2', '<f8'), ('Month_3', '<f8'), ('Month_4', '<f8'), ('LE_bowen_corr_mm_', '<f8')])
还需要注意的是,我的数据有 33 列,而返回的数据是 (7412,)。我应该怎么做才能使它成为熊猫数据框?我也希望它可以直接将数据帧作为熊猫返回,因为我不想最终将recarray转换为numpy数组并将numpy数组转换为pandas,因为当你这样做时
pd.DataFrame(data=yourdata, columns=[...])
您必须按照我返回 smogned 数据框列的相同顺序指定列,我目前无法控制
信息
- numpy 版本 1.16.4
- 熊猫版本 0.20.3
- rpy2 版本 3.2.6
【问题讨论】:
-
smogned.dtype是什么?DataFrame(smogned)有效吗? -
@hpaulj 非常感谢,将其明确转换为
pandas.DataFrame使其工作!我在回答中提到了您,并通过添加smogned.dtype的输出更新了我的问题