Pandas Python inserem lista em uma célula
Eu tenho uma lista 'abc' e um dataframe 'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Eu quero inserir a lista na célula 1B, então eu quero este resultado:
A B
0 12 NaN
1 23 ['foo', 'bar']
Como posso fazer isso?
1) Se eu usar isso:
df.ix[1,'B'] = abc
Eu recebi a seguinte mensagem de erro:
ValueError: Must have equal len keys and value when setting with an iterable
porque tenta inserir a lista (que possui dois elementos) em uma linha / coluna, mas não em uma célula.
2) Se eu usar isso:
df.ix[1,'B'] = [abc]
em seguida, insere uma lista que possui apenas um elemento que é a lista 'abc' ([['foo', 'bar']]
)
3) Se eu usar isso:
df.ix[1,'B'] = ', '.join(abc)
então ele insere uma string: (foo, bar
) mas não uma lista.
4) Se eu usar isso:
df.ix[1,'B'] = [', '.join(abc)]
depois, ele insere uma lista, mas possui apenas um elemento (['foo, bar']
), mas não dois como eu quero (['foo', 'bar']
)
Obrigado pela ajuda!
EDITARMeu novo quadro de dados e a lista antiga:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Outro quadro de dados:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Quero inserir a lista 'abc' emdf2.loc[1,'B']
e / oudf3.loc[1,'B']
.
Se o quadro de dados tiver colunas apenas com valores inteiros e / ou NaN e / ou valores de lista, a inserção de uma lista em uma célula funcionará perfeitamente. Se o quadro de dados tiver colunas apenas com valores de sequência e / ou valores de NaN e / ou valores de lista, a inserção de uma lista em uma célula funcionará perfeitamente. Mas se o dataframe tiver colunas com valores inteiros e de string e outras colunas, a mensagem de erro será exibida se eu usar isso:df2.loc[1,'B'] = abc
oudf3.loc[1,'B'] = abc
.
Outro quadro de dados:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Essas inserções funcionam perfeitamente:df.loc[1,'B'] = abc
oudf4.loc[1,'B'] = abc
.