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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Pandas anwenden Funktionen geben eine Liste in eine neue Spalte zurück

by Guest » 04 Feb 2025, 12:26

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.

Top