2016-07-07 14 views
1

Erstellt eine Funktion in Python mit Dateipfad als Eingabe. Funktion gibt eine Liste und einen Datenrahmen zurück. Wie rufe ich die Funktion richtig auf, um den Datenrahmen im Arbeitsbereich zu speichern? Code funktioniert perfekt ohne die Funktion, aber ich brauche den Ausgang für weitere Kalkulationen. Ich möchte den gesamten Datenrahmen speichern, nicht nur Teile davon. Habe keine Online-Lösung gefunden, es ist einfach zu einfach, denke ich. Danke im Voraus!Speichern von Funktionsausgaben (einschließlich pandas DataFrame) im Arbeitsbereich in Python

FUNCTION:

def import_r_data(filepath): 

    r('load("{}")'.format(filepath)) 
    tmp_obj = r['tmp.obj'] 
    data = build_py_from_ro(tmp_obj) 
    dataframe = data['test1']['test2'] 

    column_list = list(dataframe) 
    return column_list 
    return dataframe 

CALL FUNCTION: (Fehler tritt hier Datenrahmen Ausgang (linke Seite) ist falsch eingestellt)

column_list, dataframe = import_r_data('filepathstring') 

ERROR:

ValueError: too many values to unpack (expected 2) 

EDIT: LÖSUNG (dank Ayhan und Deepspace):

return column_list, dataframe 
+0

Die Linie unterhalb Rückkehr column_list wird nicht ausgeführt ändern. Wenn Sie ein Tupel zurückgeben wollen, versuchen Sie 'return column_list, dataframe' zu ​​schreiben. Ich glaube nicht, dass dies das eigentliche Problem mit Ihrem Code ist, also poste ich das nicht als Antwort. – ayhan

+0

Gelöst für mich, danke! :) Übersehen die falsche Return-Anweisung ... – NumbThumb

Antwort

0
return column_list 
return dataframe 

Sobald Sie die erste return-Anweisung die Funktion zurückkehrt getroffen, und die die zweite return-Anweisung wird nie erreicht. Deshalb gibt die Zeile column_list, dataframe = import_r_data('filepathstring') eine ValueError aus:

import_r_data gibt ein einzelnes Objekt zurück, aber Sie versuchen, diesen einzelnen Wert einem Tupel zuzuweisen.

Sie sollten diese 2 Zeilen zu return column_list, dataframe

+0

Okay, auf der falschen Seite gesucht, das behebt es! Wow, vielen Dank, verschwendete eine ganze Stunde auf der Suche nach der Lösung! Und dank "Ayhan" auch. :) – NumbThumb