Mon dataframe a quatre colonnes avec des couleurs. Je veux les combiner dans une colonne appelée "Couleurs" et utiliser des virgules pour séparer les valeurs.
Par exemple, j'essaye de combiner dans une colonne Couleurs comme ceci:
ID Black Red Blue Green Colors
120 NaN red NaN green red, green
121 black Nan blue NaN black, blue
Mon code est:
df['Colors'] = df[['Black, 'Red', 'Blue', 'Green']].apply(lambda x: ', '.join(x), axis=1)
Mais la sortie pour ID 120 est:, rouge, vert
Et la sortie pour ID 121 est: noir, bleu,
TROUVE MON PROBLÈME! Plus tôt dans mon code, j'ai remplacé "Aucun" par "" au lieu de NaN. Après avoir effectué le changement, plus incorporé des commentaires pour insérer [x.notnull ()], cela fonctionne!
df['Black'].replace('None', np.nan, inplace=True)
df['Colors'] = df[['Black, 'Red', 'Blue', 'Green']].apply(lambda x: ', '.join(x[x.notnull()]), axis=1)
Vous avez juste besoin de gérer les NaN
df['Colors'] = df[['Black', 'Red', 'Blue', 'Green']].apply(lambda x: ', '.join(x[x.notnull()]), axis = 1)
ID Black Red Blue Green Colors
0 120 NaN red NaN green red, green
1 121 black NaN blue NaN black, blue
Utilisation de dot
s=df.iloc[:,1:]
s.notnull()
Black Red Blue Green
0 False True False True
1 True True True False
s.notnull().dot(s.columns+',').str[:-1]
0 Red,Green
1 Black,Red,Blue
dtype: object
df['color']=s.notnull().dot(s.columns+',').str[:-1]