Ho un elenco "abc" e un dataframe "df":
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Voglio inserire l'elenco nella cella 1B, quindi voglio questo risultato:
A B
0 12 NaN
1 23 ['foo', 'bar']
Come posso farlo?
1) Se uso questo:
df.ix[1,'B'] = abc
Ricevo il seguente messaggio di errore:
ValueError: Must have equal len keys and value when setting with an iterable
perché cerca di inserire l'elenco (che ha due elementi) in una riga / colonna ma non in una cella.
2) Se uso questo:
df.ix[1,'B'] = [abc]
quindi inserisce una lista che ha un solo elemento che è la lista 'abc' ( [['foo', 'bar']]
).
3) Se uso questo:
df.ix[1,'B'] = ', '.join(abc)
quindi inserisce una stringa: ( foo, bar
) ma non una lista.
4) Se uso questo:
df.ix[1,'B'] = [', '.join(abc)]
quindi inserisce una lista ma ha solo un elemento ( ['foo, bar']
) ma non due come voglio ( ['foo', 'bar']
).
Grazie per l'aiuto!
MODIFICARE
Il mio nuovo dataframe e il vecchio elenco:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Un altro dataframe:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Voglio inserire l'elenco "abc" in df2.loc[1,'B']
e / o df3.loc[1,'B']
.
Se il dataframe ha colonne solo con valori interi e / o valori NaN e / o valori di elenco, l'inserimento di un elenco in una cella funziona perfettamente. Se il dataframe ha colonne solo con valori stringa e / o valori NaN e / o valori elenco, l'inserimento di un elenco in una cella funziona perfettamente. Ma se il dataframe ha colonne con valori interi e stringa e altre colonne, viene visualizzato il messaggio di errore se uso questo: df2.loc[1,'B'] = abc
o df3.loc[1,'B'] = abc
.
Un altro dataframe:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Questi inserti funzionano perfettamente: df.loc[1,'B'] = abc
o df4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']