2017-10-01 7 views
2

私はパンダのデータフレームに読み込んだcsvファイルを持っています。 「Notes」と「ActivityType」という2つの特定の列があり、基準として使用します。 'Notes'列に 'Morning exercise'または 'Morning workout'の文字列値が含まれていたり、 'ActivityType'列に文字列値が含まれている場合(セルの大部分がNullで、Null値がカウントされないようにする)新しい列「MorningExercise」を挿入し、どちらかの条件が満たされている場合は1を、どちらもない場合は0を挿入します。パンダのデータフレームで特定のパターンに従った行を選択

私は以下のコードを使用して新しい列を作成し、テキスト条件が 'Notes'列で満たされている場合は1または0を挿入していますが、 'ActivityType '列には任意の文字列値が含まれます。 「ActivityTypeを」は列に対して

JoinedTables['MorningExercise'] = JoinedTables['Notes'].str.contains(('Morning workout' or 'Morning exercise'), case=False, na=False).astype(int) 

、私はcritieriaとしてpd.notnull()機能を使用すると思うだろう。

Pythonでどちらかの基準が満たされているかどうかを確認する方法が必要です。そうであれば、新しい列に1または0を入力してください。

+0

True/Falseのブール値を作成しています。 (ヒントは決してヌルではありません) – dartdog

答えて

5

あなたはstr.containsで使用する正規表現パターンをファッションする必要があります:

regex = r'Morning\s*(?:workout|exercise)' 
JoinedTables['MorningExercise'] = \ 
     JoinedTables['Notes'].str.contains(regex, case=False, na=False).astype(int) 

パターンがworkoutかのどちらかに続いてMorning探します詳細

Morning  # match "Morning" 
\s*   # 0 or more whitespace chars 
(?:   # open non-capturing group 
workout  # match "workout" 
|    # OR operator 
exercise  # match "exercise" 
) 

exercise

関連する問題