データフレームには、色付きの4つの列があります。それらを「色」と呼ばれる1つの列に結合し、コンマを使用して値を区切ります。
たとえば、私はこのように色の列に結合しようとしています:
ID Black Red Blue Green Colors
120 NaN red NaN green red, green
121 black Nan blue NaN black, blue
私のコードは:
df['Colors'] = df[['Black, 'Red', 'Blue', 'Green']].apply(lambda x: ', '.join(x), axis=1)
しかし、ID 120の出力は次のとおりです:、赤、、緑
そして、ID 121の出力は、黒、青、
私の問題を見つけてください!コードの前半で、「None」をNaNの代わりに「」に置き換えました。変更を加え、さらに[x.notnull()]を挿入するフィードバックを組み込むと、機能します!
df['Black'].replace('None', np.nan, inplace=True)
df['Colors'] = df[['Black, 'Red', 'Blue', 'Green']].apply(lambda x: ', '.join(x[x.notnull()]), axis=1)
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
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]