Ich habe eine Liste 'abc' und einen Datenrahmen 'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Ich möchte die Liste in Zelle 1B einfügen, also möchte ich dieses Ergebnis:
A B
0 12 NaN
1 23 ['foo', 'bar']
Wie kann ich das machen?
1) Wenn ich das benutze:
df.ix[1,'B'] = abc
Ich erhalte die folgende Fehlermeldung:
ValueError: Must have equal len keys and value when setting with an iterable
weil es versucht, die Liste (die zwei Elemente enthält) in eine Zeile / Spalte, aber nicht in eine Zelle einzufügen.
2) Wenn ich das benutze:
df.ix[1,'B'] = [abc]
dann wird eine Liste eingefügt, die nur ein Element enthält, nämlich die 'abc'-Liste ( [['foo', 'bar']]
).
3) Wenn ich das benutze:
df.ix[1,'B'] = ', '.join(abc)
dann fügt es eine Zeichenfolge ein: ( foo, bar
), aber keine Liste.
4) Wenn ich das benutze:
df.ix[1,'B'] = [', '.join(abc)]
dann fügt es eine Liste ein, aber es hat nur ein Element ( ['foo, bar']
), aber nicht zwei, wie ich will ( ['foo', 'bar']
).
Danke für die Hilfe!
BEARBEITEN
Mein neuer Datenrahmen und die alte Liste:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Ein weiterer Datenrahmen:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Ich möchte die 'abc'-Liste in df2.loc[1,'B']
und / oder einfügen df3.loc[1,'B']
.
Wenn der Datenrahmen nur Spalten mit ganzzahligen Werten und / oder NaN-Werten und / oder Listenwerten enthält, funktioniert das Einfügen einer Liste in eine Zelle einwandfrei. Wenn der Datenrahmen nur Spalten mit Zeichenfolgenwerten und / oder NaN-Werten und / oder Listenwerten enthält, funktioniert das Einfügen einer Liste in eine Zelle einwandfrei. Wenn der Datenrahmen jedoch Spalten mit Ganzzahl- und Zeichenfolgenwerten sowie andere Spalten enthält, wird die Fehlermeldung angezeigt, wenn ich Folgendes verwende:df2.loc[1,'B'] = abc
oder df3.loc[1,'B'] = abc
.
Ein weiterer Datenrahmen:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Diese Einsätze funktionieren perfekt: df.loc[1,'B'] = abc
oder df4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']