2017-11-06 5 views
1

私はCSVファイルを持っていますが、私はそれを操作するためにパンダを使用しています。列は、配列内の値のいずれかが含まれており、それがない場合、私は指定された値が含まれていない場合は列の値を変更してください

searchfor = ['LANGUAGES', 'FRENCH'] 
data.loc[data['field'].str.contains('|'.join(searchfor), na=False), 'field'] = 16 

今、私は反対をしたい場合は...値を変更した場合たとえば、私がチェックするのですか?配列に配列の値が含まれていない場合は、変更します。したがって、列の値がLanguagesでなく、FRENCHでない場合は、intに変更してください。私が使用している配列が非常に大きくなる可能性があるので、私はスケーラブルな答えが必要です。

おかげ

答えて

3

はあなたがいないでは '〜' 演算子を使用することができます

data = pd.DataFrame({'field': ['LANGUAGES', 'FRENCH', 'BLAH', None, np.nan, 'Languages']}) 

searchfor = ['LANGUAGES', 'FRENCH'] 

data = data.loc[~data['field'].str.contains('|'.join(searchfor), na=False), 'field'] = 16 

あなたは

を取得
field 
0 LANGUAGES 
1 FRENCH 
2 16 
3 16 
4 16 
5 16 

コードは大文字と小文字を処理しません。そのためには、まずstr.upper()を使用してください。

data = data.loc[~data['field'].str.upper().str.contains('|'.join(searchfor), na=False), 'field'] = 16 

    field 
0 LANGUAGES 
1 FRENCH 
2 16 
3 16 
4 16 
5 Languages 
1

チルダ(〜)でブールインデクサを無効:。

data.loc[~data['field'].str.contains('|'.join(searchfor), na=False), 'field'] = 16 
関連する問題