Mam listę „abc” i ramkę danych „df”:
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Chcę wstawić listę do komórki 1B, więc chcę ten wynik:
A B
0 12 NaN
1 23 ['foo', 'bar']
Jak mogę to zrobić?
1) Jeśli używam tego:
df.ix[1,'B'] = abc
Otrzymuję następujący komunikat o błędzie:
ValueError: Must have equal len keys and value when setting with an iterable
ponieważ próbuje wstawić listę (która ma dwa elementy) do wiersza / kolumny, ale nie do komórki.
2) Jeśli używam tego:
df.ix[1,'B'] = [abc]
następnie wstawia listę zawierającą tylko jeden element, którym jest lista „abc” ( [['foo', 'bar']]
).
3) Jeśli używam tego:
df.ix[1,'B'] = ', '.join(abc)
następnie wstawia ciąg: ( foo, bar
), ale nie listę.
4) Jeśli używam tego:
df.ix[1,'B'] = [', '.join(abc)]
następnie wstawia listę, ale ma tylko jeden element ( ['foo, bar']
), ale nie dwa, jak chcę ( ['foo', 'bar']
).
Dzięki za pomoc!
EDYTOWAĆ
Moja nowa ramka danych i stara lista:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Inna ramka danych:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Chcę wstawić listę „abc” do df2.loc[1,'B']
i / lub df3.loc[1,'B']
.
Jeśli ramka danych zawiera kolumny tylko z wartościami całkowitymi i / lub wartościami NaN i / lub wartościami listy, to wstawienie listy do komórki działa idealnie. Jeśli ramka danych ma kolumny tylko z wartościami ciągów i / lub wartościami NaN i / lub wartościami listy, wstawienie listy do komórki działa idealnie. Ale jeśli ramka danych ma kolumny z wartościami całkowitymi i ciągami oraz inne kolumny, pojawi się komunikat o błędzie, jeśli użyję tego: df2.loc[1,'B'] = abc
lub df3.loc[1,'B'] = abc
.
Inna ramka danych:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Te wkładki działają idealnie: df.loc[1,'B'] = abc
lub df4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']