Ich versuche apply
eine Funktion entlang DataFrames
's Zeilen (mit apply
mit axis=1
). Die Funktion gibt ein NDArray mit 2 Dimensionen zurück. Ich würde die Rückkehr des apply
wie ein einzelnes Objekt Spalte zu sein, die 2D-NDArrays enthalten geschieht, sondern erhalte ich:Rückgabe von 2D NDArray in Pandas DataFrame.apply
<venv>/lib/python2.7/site-packages/pandas/core/frame.pyc in _homogenize(data, index, dtype)
5544 v = lib.fast_multiget(v, oindex.values, default=NA)
5545 v = _sanitize_array(v, index, dtype=dtype, copy=False,
-> 5546 raise_cast_failure=False)
5547
5548 homogenized.append(v)
<venv>/lib/python2.7/site-packages/pandas/core/series.pyc in _sanitize_array(data, index, dtype, copy, raise_cast_failure)
2918 elif subarr.ndim > 1:
2919 if isinstance(data, np.ndarray):
-> 2920 raise Exception('Data must be 1-dimensional')
2921 else:
2922 subarr = _asarray_tuplesafe(data, dtype=dtype)
Exception: Data must be 1-dimensional
Gibt es eine Möglichkeit Pandas zu sagen, nicht zu versuchen, das Array auszupacken?
UPDATE Beispiel:
arr = np.ones((3,3))
pd.DataFrame({'d': [arr, arr]}).apply(lambda x: x.ix['d'], axis=1)
können Sie hinzufügen ein Beispieldatensatz, definiti von Ihrer Funktion und dem gewünschten Datensatz auf Ihren Beitrag? – MaxU
'df.ix ['d']' erzeugt einen Fehler - es ist nicht klar, was Sie erreichen möchten (was ist der gewünschte DF/Datensatz)? – MaxU
Richtig dies gilt zeilenweise zu übergeben an das Lambda ist eine Serie entsprechend der Zeile, wo der Index der Serie ist die Spalte Namen, –