13

2つのサブセットdfを選択するデータフレームがdf_aありdf_bます。たとえば、irisデータセットの場合:

df_a = iris[iris.Name == "Iris-setosa"]
df_b = iris[iris.Name == "Iris-virginica"]

irisそのすべての要素を中にも中にdf_aも含まないようにするための最良の方法は何df_bですか?df_aとを定義した元の条件を参照したくないdf_bdf_adf_bはのサブセットであると仮定しているので、とのインデックスに基づいてirisから要素を引き出したいと思います。基本的に、次のように想定します。irisdf_adf_b

df_a = get_a_subset(iris)
df_b = get_b_subset(iris)
# retrieve the subset of iris that 
# has all elements not in df_a or in df_b
# ...

編集:これは非効率的でエレガントではないように見える解決策であり、パンダにはもっと良い方法があると確信しています:

# get subset of iris that is not in a nor in b
df_rest = iris[map(lambda x: (x not in df_a.index) & (x not in df_b.index), iris.index)]

そして2つ目:

df_rest = iris.ix[iris.index - df_a.index - df_b.index]

パンダでこれを最も効率的/エレガントに行うにはどうすればよいですか?ありがとう。

4

1 に答える 1

19

これは、2番目のソリューションよりも少し速いようです。.ix:を使用してインデックスを作成すると、オーバーヘッドが少し増えます。

df[~df.index.isin(df_a.index+df_b.index)]
于 2013-02-20T18:18:56.490 に答える