Я пытаюсь запустить следующий код в кадре данных R с помощью Python.Загрузить кадр данных R в Python и преобразовать в кадр данных Pandas
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import os
import pandas as pd
import timeit
from rpy2.robjects import r
from rpy2.robjects import pandas2ri
pandas2ri.activate()
start = timeit.default_timer()
def f(x):
return fuzz.partial_ratio(str(x["sig1"]),str(x["sig2"]))
def fu_match(file):
f1=r.load(file)
f1=pandas2ri.ri2py(f1)
f1["partial_ratio"]=f1.apply(f, axis=1)
f1=f1.loc[f1["partial_ratio"]>90]
f1.to_csv("test.csv")
stop = timeit.default_timer()
print stop - start
fu_match('test_full.RData')
Произошла ошибка.
AttributeError: 'numpy.ndarray' object has no attribute 'apply'
Я предполагаю, что проблема связана с преобразованием из кадра данных R в Pandas. Я знаю, что это повторяющийся вопрос, но я пробовал все решения, поставленные на предыдущие вопросы, без успеха.
Пожалуйста, любая помощь будет очень признательна.
EDIT: Вот глава .RData.
city sig1 sig2
1 19 claudiopillonrobertoscolari almeidabartolomeufrancisco
2 19 claudiopillonrobertoscolari cruzricardosantasergiosilva
3 19 claudiopillonrobertoscolari costajorgesilva
4 19 claudiopillonrobertoscolari costafrancisconaifesilva
5 19 claudiopillonrobertoscolari camarajoseluizreis
6 19 claudiopillonrobertoscolari almeidafilhojoaopimentel
Спасибо @danodonovan. Я сделал так, как вы сказали, и я получаю эту новую ошибку. $ ValueError: Форма переданных значений (1, 2), индексы подразумевают (3, 2) $. Код работает, когда я читаю тестовые данные в csv. Проблема в том, что набор данных огромен, и преобразование его в cvs дает мне 50-гигабайтный файл. .RData более эффективен при хранении. – Aline
Я добавил к заголовку кадра данных. – Aline
Без полной ошибки трассировки я не могу помочь, какая линия производит ValueError? Пинг меня, если вы хотите переместить это в чат http://chat.stackoverflow.com/rooms/81406/q-load-r-data-frame-into-python-and-convert-to-pandas-data- frame – danodonovan