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.
Pandas anwenden Funktionen geben eine Liste in eine neue Spalte zurück ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post