Page 1 of 1

Pandas anwenden Funktionen geben eine Liste in eine neue Spalte zurück

Posted: 04 Feb 2025, 12:26
by Guest
Ich habe einen Pandas -Datenfreame: < /p>
import pandas as pd
import numpy as np

np.random.seed(150)
df = pd.DataFrame(np.random.randint(0, 10, size=(10, 2)), columns=['A', 'B'])
< /code>
Ich möchte eine neue Spalte "C" hinzufügen, deren Werte die kombinierte Liste aller drei Zeilen in Spalte "B" sind. Daher verwende ich die folgende Methode, um meine Anforderungen zu erfüllen, aber diese Methode ist langsam, wenn die Daten groß sind. < /P>
>>> df['C'] = [df['B'].iloc[i-2:i+1].tolist() if i >= 2 else None for i in range(len(df))]
>>> df
A B C
0 4 9 None
1 0 2 None
2 4 5 [9, 2, 5]
3 7 9 [2, 5, 9]
4 8 3 [5, 9, 3]
5 8 1 [9, 3, 1]
6 1 4 [3, 1, 4]
7 4 1 [1, 4, 1]
8 1 9 [4, 1, 9]
9 3 7 [1, 9, 7]
< /code>
Wenn ich versuche, die Funktion DF.Apply zu verwenden, erhalte ich eine Fehlermeldung: < /p>
df['C'] = df['B'].rolling(window=3).apply(lambda x: list(x), raw=False)

TypeError: must be real number, not list
< /code>
Ich erinnere mich, dass Pandas anwenden keine Liste zurückgibt. Gibt es also einen besseren Weg? Ich habe das Forum durchsucht, konnte aber kein geeignetes Thema über Bewerben und Rückkehr finden.