2017-03-20 6 views
1

null /空の値を持つデータフレームがあります。
私は簡単にこれを行うことによって、NULL値の各行のカウントを取得することができます。フィールドNULL_COUNTNULLている列の数を入れます各行のデータフレームのNULL /空のリストの列名

df['NULL_COUNT'] = len(df[fields] - df.count(axis=1) 

を。

nullの場合、別のフィールドに同じ方法で列ヘッダーを書き込む方法はありますか?

df['NULL_FIELD_NAMES'] = "<some query expression>" 

例:上記DFで

df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)], columns=['A', 'B', 'C']) 

、2行目は、df['NULL_FIELD_NAME'] = 'B'を有するべきであり、3行目は、使用できdf['NULL_FIELD_NAME'] = 'C'

答えて

1

を有するべきである:

df['new'] = (df.isnull() * df.columns.to_series()).apply(','.join,axis=1).str.strip(',') 

別の解決策:

df['new'] = df.apply(lambda x: ','.join(x[x.isnull()].index),axis=1) 

サンプル:私は代わりにNULLの値を検索する場合

df = pd.DataFrame([range(3), [np.NaN, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)], 
        columns=['A', 'B', 'C']) 
print (df) 
    A B C 
0 0.0 1.0 2.0 
1 NaN NaN 0.0 
2 0.0 0.0 NaN 
3 0.0 1.0 2.0 
4 0.0 1.0 2.0 

df['new'] = df.apply(lambda x: ','.join(x[x.isnull()].index),axis=1) 
print (df) 
    A B C new 
0 0.0 1.0 2.0  
1 NaN NaN 0.0 A,B 
2 0.0 0.0 NaN C 
3 0.0 1.0 2.0  
4 0.0 1.0 2.0  
+0

この構文は有効でしょうか? axis = 1) '' ' –

+0

はい、あなたは条件が必要なので、それは可能です。いいです。 – jezrael

関連する問題