Tengo una lista 'abc' y un marco de datos 'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Quiero insertar la lista en la celda 1B, así que quiero este resultado:
A B
0 12 NaN
1 23 ['foo', 'bar']
¿Cómo puedo hacer eso?
1) Si uso esto:
df.ix[1,'B'] = abc
Recibo el siguiente mensaje de error:
ValueError: Must have equal len keys and value when setting with an iterable
porque intenta insertar la lista (que tiene dos elementos) en una fila / columna pero no en una celda.
2) Si uso esto:
df.ix[1,'B'] = [abc]
luego inserta una lista que tiene solo un elemento que es la lista 'abc' ( [['foo', 'bar']]
).
3) Si uso esto:
df.ix[1,'B'] = ', '.join(abc)
luego inserta una cadena: ( foo, bar
) pero no una lista.
4) Si uso esto:
df.ix[1,'B'] = [', '.join(abc)]
luego inserta una lista pero solo tiene un elemento ( ['foo, bar']
) pero no dos como quiero ( ['foo', 'bar']
).
¡Gracias por la ayuda!
EDITAR
Mi nuevo marco de datos y la lista anterior:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Otro marco de datos:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Quiero insertar la lista 'abc' en df2.loc[1,'B']
y / o df3.loc[1,'B']
.
Si el marco de datos tiene columnas solo con valores enteros y / o valores NaN y / o valores de lista, entonces insertar una lista en una celda funciona perfectamente. Si el marco de datos tiene columnas solo con valores de cadena y / o valores NaN y / o valores de lista, entonces insertar una lista en una celda funciona perfectamente. Pero si el marco de datos tiene columnas con valores enteros y de cadena y otras columnas, aparece el mensaje de error si uso esto: df2.loc[1,'B'] = abc
o df3.loc[1,'B'] = abc
.
Otro marco de datos:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Estos insertos funcionan perfectamente: df.loc[1,'B'] = abc
o df4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']