Я использовал R для сохранения набора данных в формате .rds
. Проблема в том, что мне нужно прочитать этот .rds
файл с использованием Python без локальной установки R. Этот .rds
файл содержит объект класса sf data.framte
. Образец .rds
можно найти здесь .
Мне удалось использовать rpy2
, чтобы открыть его. Тем не менее, эта библиотека использует R, чтобы открыть файл. Поскольку я создаю приложение на Python, мне не нужна зависимость от R.
Ниже вы можете найти рабочее решение, используя rpy2
.
import geopandas as gpd
import pandas as pd
import rpy2.robjects as robjects
from rpy2.robjects import numpy2ri
numpy2ri.activate()
from shapely.geometry import LineString
def rds_to_pandas(path='temp.rds'):
readRDS = robjects.r['readRDS']
df = readRDS('temp.rds')
return df
def from_rvector_to_rlist(vector):
return [list(v) for v in vector]
def from_rlist_to_coorlist(rlist):
coorlist = []
for r in rlist:
bound = int(len(r)/2)
coorlist.append(list(zip(r[:bound], r[bound:])))
return coorlist[0]
# Open as GeoPandas
df = pd.DataFrame(rds_to_pandas())
df['geometry'] = df['geometry'].apply(from_rvector_to_rlist)
df['geometry'] = df['geometry'].apply(from_rlist_to_coorlist)
df['geometry'] = df['geometry'].apply(LineString)
Когда я пытаюсь pyreadr
, я продолжаю получать ту же ошибку:
"ValueError: Unable to read from file"
Кто-нибудь знает, как открыть этот файл .rds
, используя pyreadr
или другой метод, который не зависит от R?