pandasデータフレームがあり、データフレームの2列の値に基づいてdf全体をフィルター処理します。IBRDまたはIMF!= 0のすべての行と列を取得します。 。
alldata_balance = alldata[(alldata[IBRD] !=0) or (alldata[IMF] !=0)]
しかし、これは私にValueErrorを与えます
ValueError:シリーズの真理値はあいまいです。 a.empty、a.bool()、a.item()、a.any()、またはa.all()を使用します。
だから私はorステートメントを正しく使用していないことを知っていますが、これを行う方法はありますか?
ドキュメントから:
もう1つの一般的な操作は、ブールベクトルを使用してデータをフィルター処理することです。演算子は次のとおりです。 for or、&for and、および〜for not。これらは、括弧を使用してグループ化する必要があります。
http://pandas.pydata.org/pandas-docs/version/0.15.2/indexing.html#boolean-indexing
試してください:
alldata_balance = alldata[(alldata[IBRD] !=0) | (alldata[IMF] !=0)]
次のようにして結果を得ることができます:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
....
....
#use filter with plot
#or
fg=sns.factorplot('Retailer country', data=df1[(df1['Retailer country']=='United States') | (df1['Retailer country']=='France')], kind='count')
fg.set_xlabels('Retailer country')
plt.show()
#also
#and
fg=sns.factorplot('Retailer country', data=df1[(df1['Retailer country']=='United States') & (df1['Year']=='2013')], kind='count')
fg.set_xlabels('Retailer country')
plt.show()