Ausgabe
Ich habe einen Datenrahmen, in dem ich ‘roh’ speichern möchte numpy.array
:
df['COL_ARRAY'] = df.apply(lambda r: np.array(do_something_with_r), axis=1)
aber es scheint, dass pandas
versucht wird, das numpy.array zu “entpacken”.
Gibt es eine Problemumgehung? Anders als die Verwendung eines Wrappers (siehe Bearbeiten unten)?
Ich habe es reduce=False
ohne Erfolg versucht.
BEARBEITEN
Das funktioniert, aber ich muss die ‘Dummy’- Data
Klasse verwenden, um das Array zu umschließen, was unbefriedigend und nicht sehr elegant ist.
class Data:
def __init__(self, v):
self.v = v
meas = pd.read_excel(DATA_FILE)
meas['DATA'] = meas.apply(
lambda r: Data(np.array(pd.read_csv(r['filename'])))),
axis=1
)
Lösung
Verwenden Sie einen Wrapper um das numpy-Array, dh übergeben Sie das numpy-Array als Liste
a = np.array([5, 6, 7, 8])
df = pd.DataFrame({"a": [a]})
Ausgabe:
a 0 [5, 6, 7, 8]
Oder Sie können es verwenden apply(np.array)
, indem Sie die Tupel erstellen, dh wenn Sie einen Datenrahmen haben
df = pd.DataFrame({'id': [1, 2, 3, 4],
'a': ['on', 'on', 'off', 'off'],
'b': ['on', 'off', 'on', 'off']})
df['new'] = df.apply(lambda r: tuple(r), axis=1).apply(np.array)
Ausgabe :
ab id neu 0 an an 1 [an, an, 1] 1 ein aus 2 [ein, aus, 2] 2 aus ein 3 [aus, ein, 3] 3 aus aus 4 [aus, aus, 4]
df['new'][0]
Ausgabe :
array(['on', 'on', '1'], dtype='<U2')
Beantwortet von – Bharath
Antwort geprüft von – Katrina (FixError Volunteer)