2017-08-24 4 views
0

複数のチェック条件に基づいてデータフレームに列を作成する方法を理解したいと思います。パンダのデータフレームで条件式を指定する

私は単一の条件付きチェックを使用するとうまくいくようです。私はこの時にチェックするために2番目のオプションを導入したときに

df['1/1/2017'] = np.where(df["Term 1 Start Date"] <= '1/1/2017'), 'True', 'False') 

しかし私に言って失敗したとValueError: The truth value of a Series is ambiguous.

df['1/1/2017'] = np.where(
    (df["Term 1 Start Date"] <= '1/1/2017' and df["Term 1 End Date"] > '1/1/2017'), 'True', 'False') 

ないすべての行を充填していることに留意すべきである。あなたが期待するよう日付が日付を含みます。 この新しい列を2つの基準に基づいて作成するにはどうすればよいですか?

現在のデータフレーム

望ましい結果

用語1開始日| 1/1/2017
空白|空白
6/12/2016 | True
5/1/2016 | True
2/1/2017 | False
4/1/2017 | False

+0

リンクを確認してください。https://stackoverflow.com/questions/21415661/logic-operator-for-boolean-indexing-in-pandas – Wen

答えて

3

andの代わりにビット単位の演算子&が必要です。また、優先順位を処理するために余分な括弧が必要になります。

df['1/1/2017'] = np.where(((df["Term 1 Start Date"] <= '1/1/2017')\ 
          & (df["Term 1 End Date"] > '1/1/2017'),\ 
        'True', 'False')) 

理由ビーイング、andは、データフレームで素晴らしいプレーしませんが、ビット演算子&|~は、すべての条件付きで使用するために、オーバーロードされます。