結論。Pandasではこちらを使いましょう。
- 論理演算は、
or
,and
ではなく、|
、&
を使うべし。
論理 | DataFrameでの記号 | |
---|---|---|
or | | | |
and | & | |
not | ~ |
or、andなどを使った場合のエラー
誤り
df3.loc[(df3["品目"] == "パッケージ") or (df3["品目"] == "パッケージ")]
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
使用例
行抽出
論理演算子を使って複数条件によって抽出する。
# 品目列が ”パッケージ”か”パッケージ”のいづれかの行
df3.loc[(df3["品目"] == "パッケージ") | (df3["品目"] == "パッケージ")]
# 品目列が "Data_not_found"という文字列 ではない行
df3.loc[~(df_out["品目"] == "Data_not_found")]
行・列抽出
行と列同時に抽出する
# 品目列が "袋"でも"箱"でも ない 行の "単価"列を抽出する。
df_out.loc[~((df_out["品目"] == "袋") | (df_out["品目"] == "箱"))]["単価"]
補足追記 => 括弧忘れがち注意!!!
各条件は括弧で囲わないとエラーになる。
SyntaxError: invalid syntax
参考にさせていただきました。
詳細は下記に詳しく紹介されています。