ich eine Python Pandas Datenrahmen df haben:Pandas - Spaltenwerte in eine Liste in einer neuen Spalte kombinieren
d=[['hello',1,'GOOD','long.kw'],
[1.2,'chipotle',np.nan,'bingo'],
['various',np.nan,3000,123.456]]
t=pd.DataFrame(data=d, columns=['A','B','C','D'])
, die wie folgt aussieht:
print(t)
A B C D
0 hello 1 GOOD long.kw
1 1.2 chipotle NaN bingo
2 various NaN 3000 123.456
Ich versuche, eine neue Spalte zu erstellen Dies ist ein list
der Werte in A
, B
, C
und . So würde es so aussehen:
t['combined']
Out[125]:
0 [hello, 1, GOOD, long.kw]
1 [1.2, chipotle, nan, bingo]
2 [various, nan, 3000, 123.456]
Name: combined, dtype: object
ich diesen Code versuche:
t['combined'] = t.apply(lambda x: list([x['A'],
x['B'],
x['C'],
x['D']]),axis=1)
Welche diesen Fehler zurückgibt:
ValueError: Wrong number of items passed 4, placement implies 1
Was mir ist rätselhaft, wenn entfernen Sie eine der Spalten, die ich in die Liste einfügen möchte (oder eine weitere Spalte zum Dataframe hinzufügen, die ich NICHT zur Liste hinzufüge), funktioniert mein Code.
Zum Beispiel dieses Code ausführen:
t['combined'] = t.apply(lambda x: list([x['A'],
x['B'],
x['D']]),axis=1)
gibt diese, die perfekt ist, wenn ich nur die drei Spalten gesucht:
print(t)
A B C D combined
0 hello 1 GOOD long.kw [hello, 1, long.kw]
1 1.2 chipotle NaN bingo [1.2, chipotle, bingo]
2 various NaN 3000 123.456 [various, nan, 123.456]
ich bei einem vollständigen Verlust bin, warum die anfragende ' Eine kombinierte Liste aller Spalten im Datenframe würde einen Fehler erzeugen, aber alle bis auf eine Spalte auswählen, um die "kombinierte" Liste zu erstellen, und die Liste wird wie erwartet erstellt.
Ich bin immer noch verwirren, warum Ihr Ansatz nicht funktioniert, obwohl –
ein Fehler – clg4