Ich arbeite mit der eda-explorer Python-Bibliothek von MIT, die es ermöglicht, physiologische Dateien von bestimmten tragbaren Biosensoren zu importieren. Dieses Libraray verwendet Pandas DataFrames zum Speichern der physiologischen Zeitreihen. Ich habe diese Bibliothek in verschiedenen Computer-Setups benutzt. Wenn ich versuche, es in meiner Ubuntu 15.10-Umgebung zu verwenden, erhalte ich eine Fehlermeldung, die ich nicht verstehe. Es wird auf die folgende Funktion bezogen, die in immer die Daten in einem Datenrahmen und dabei einige intitial Transformationen instrumental ist:Python Pandas Dataframe Index, Fehler TypeError: Eingabe muss iterierbar sein, Pandas Version vielleicht falsch
def loadData_E4(filepath):
# Load data
data = pd.DataFrame.from_csv(os.path.join(filepath,'EDA.csv'))
data.reset_index(inplace=True)
# Get the startTime and sample rate
startTime = pd.to_datetime(float(data.columns.values[0]),unit="s")
sampleRate = float(data.iloc[0][0])
data = data[data.index!=0]
data.index = data.index-1
Daraus ergeben sich die folgenden Fehlermeldungen:
In [1]:
run batch_edaexplorer_template.py
Classifying data for ...[my file location]...
---------------------------------------------------------------------
TypeError Traceback (most recent call last)
/...mypath/eda-explorer-master/batch_edaexplorer_template.py in <module>()
69 elif dataType=='e4':
70 print "Classifying data for " + filepath
---> 71 labels,data = classify(filepath,classifierList,pickleDirectory,lf.loadData_E4)
72 elif dataType=="misc":
73 print "Classifying data for " + filepath
/...mypath/eda-explorer-master/EDA_Artifact_Detection_Script.pyc in classify(filepath, classifierList, pickleDirectory, loadDataFunction)
225
226 # Load data
--> 227 data = loadDataFunction(filepath)
228
229 # Get pickle List and featureNames list
/...mypath/eda-explorer-master/load_files.pyc in loadData_E4(filepath)
58 sampleRate = float(data.iloc[0][0])
59 data = data[data.index!=0]
---> 60 data.index = data.index-1
61
62 # Reset the data frame assuming 4Hz samplingRate
/usr/lib/python2.7/dist-packages/pandas/core/index.pyc in __sub__(self, other)
1161 warnings.warn("using '-' to provide set differences with Indexes is deprecated, "
1162 "use .difference()",FutureWarning)
-> 1163 return self.difference(other)
1164
1165 def __and__(self, other):
/usr/lib/python2.7/dist-packages/pandas/core/index.pyc in difference(self, other)
1314
1315 if not hasattr(other, '__iter__'):
-> 1316 raise TypeError('Input must be iterable!')
1317
1318 if self.equals(other):
TypeError: Input must be iterable!
ich nicht bekommen Diese Fehlermeldung auf meinem Windows-PC. Ich benutze Pandas Version 0.15.0 in der Ubuntu-Umgebung. Ist das vielleicht das Problem, dass die bestimmte Syntax des Index nur in höheren Versionen von Pandas erlaubt ist? Wie sollte ich die Syntax korrigieren, so dass sie mit älteren Versionen von Pandas funktioniert? Oder verpasse ich den Punkt?
Versuchen Sie 'data.index = pd.Index (data.index.values-1)' anstelle von 'data.index = data.index-1'. –
Ja, das hat das Problem behoben. Vielen Dank! War das tatsächlich eine Änderung der zulässigen Syntax in Bezug auf Datenrahmenindizes in verschiedenen Pandas-Versionen? –
Ich denke, es war eine Ergänzung in einer späteren Version, ja. Ich habe meinen Kommentar als Antwort hinzugefügt, damit Sie ihn akzeptieren können. –