1. ホーム
  2. python

[解決済み] PandasのデータフレームをOR文を使ってフィルタリングする

2023-02-02 08:46:47

質問

pandasのデータフレームがあり、データフレーム内の2つの列の値に基づいてdf全体をフィルタリングしたいのです。 私はIBRDまたはIMF != 0であるすべての行と列を取得したい。

alldata_balance = alldata[(alldata[IBRD] !=0) or (alldata[IMF] !=0)]

が、これではValueErrorが発生します。

ValueErrorです。Seriesの真偽値は曖昧です。a.emptyを使用します。 a.bool(), a.item(), a.any(), a.all()のいずれかを使用してください。

ということで、or文の使い方が間違っているのはわかったのですが、何か方法はありますか?

どのように解決するのですか?

ドキュメントから。

もう一つの一般的な操作は、ブーリアンベクトルを使ってデータをフィルタリングすることです。 です。演算子は以下の通りです。| はor、&はand、~はnotです。これらは は括弧を使用してグループ化する必要があります。

http://pandas.pydata.org/pandas-docs/version/0.15.2/indexing.html#boolean-indexing

試してみてください。

alldata_balance = alldata[(alldata[IBRD] !=0) | (alldata[IMF] !=0)]