J'ai une liste 'abc' et un dataframe 'df':
abc = ['foo', 'bar']
df =
A B
0 12 NaN
1 23 NaN
Je veux insérer la liste dans la cellule 1B, donc je veux ce résultat:
A B
0 12 NaN
1 23 ['foo', 'bar']
Comment puis-je faire ça?
1) Si j'utilise ceci:
df.ix[1,'B'] = abc
Je reçois le message d'erreur suivant:
ValueError: Must have equal len keys and value when setting with an iterable
car il essaie d'insérer la liste (qui a deux éléments) dans une ligne / colonne mais pas dans une cellule.
2) Si j'utilise ceci:
df.ix[1,'B'] = [abc]
puis il insère une liste qui n'a qu'un seul élément qui est la liste 'abc' ( [['foo', 'bar']]
).
3) Si j'utilise ceci:
df.ix[1,'B'] = ', '.join(abc)
puis il insère une chaîne: ( foo, bar
) mais pas une liste.
4) Si j'utilise ceci:
df.ix[1,'B'] = [', '.join(abc)]
puis il insère une liste mais il n'a qu'un seul élément ( ['foo, bar']
) mais pas deux comme je veux (['foo', 'bar']
).
Merci pour l'aide!
ÉDITER
Mon nouveau dataframe et l'ancienne liste:
abc = ['foo', 'bar']
df2 =
A B C
0 12 NaN 'bla'
1 23 NaN 'bla bla'
Un autre dataframe:
df3 =
A B C D
0 12 NaN 'bla' ['item1', 'item2']
1 23 NaN 'bla bla' [11, 12, 13]
Je veux insérer la liste 'abc' dans df2.loc[1,'B']
et / oudf3.loc[1,'B']
.
Si la trame de données contient des colonnes uniquement avec des valeurs entières et / ou des valeurs NaN et / ou des valeurs de liste, l'insertion d'une liste dans une cellule fonctionne parfaitement. Si le dataframe a des colonnes uniquement avec des valeurs de chaîne et / ou des valeurs NaN et / ou des valeurs de liste, l'insertion d'une liste dans une cellule fonctionne parfaitement. Mais si le dataframe a des colonnes avec des valeurs entières et de chaîne et d'autres colonnes, le message d'erreur apparaît si j'utilise ceci: df2.loc[1,'B'] = abc
oudf3.loc[1,'B'] = abc
.
Un autre dataframe:
df4 =
A B
0 'bla' NaN
1 'bla bla' NaN
Ces inserts fonctionnent parfaitement: df.loc[1,'B'] = abc
ou df4.loc[1,'B'] = abc
.
0.15.0
:df.loc[1,'b'] = ['foo','bar']