2016-04-16 26 views
1

DataFrameで2つのカラムを照合し、結果を新しい 'bool'カラムのブール値で返します。 まず、私が書いた:ブール型カラムでフィルタリングするときのパンダのFutureWarning

df_new = df[[7 for 32 in df if df 39 == 'False']] 

しかし、それは動作しませんでした。私がしたい7及び32に位置する列と一致し、これはカラム39にbool値を配置

そしてIは

マイコードが

df['bool'] = (df.iloc[:, 7] == df.iloc[:, 32]) 

上記のコードである列を一致させるだけ書いデータをスライスし、偽の値を持つ行を選択します。 Data

は私が書いた:

df_filtered = df[df['bool'] == 'False'] 

しかし、私は

間違って私がやっているかわからない

c:\python34\lib\site-packages\pandas\core\ops.py:714: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison result = getattr(x, name)(y)

として今後のエラーを得ました。 は私も

df[df[39] == 'False'] 
+0

小さなサンプルデータと予想される結果を投稿できますか? 'ちなみに' False 'は文字列dtypeで、Falseはブール ' – WoodChopper

+0

私はちょうど私が試したことを含むデータセットと期待される結果を添付しました。 –

+0

WoodChopper:問題のデータリンクを確認してください...今すぐ追加 –

答えて

1

を試してみたあなたは直接の列を比較することができます

df = pd.DataFrame({'a': [1, 2, 3], 'b': [1, 3, 2]}) 

df['Bool'] = df.a == df.b 

>>> df 
    a b Bool 
0 1 1 True 
1 2 3 False 
2 3 2 False 

をすなわち~、否定フラグを使用して、偽の値をフィルタリングするには:

>>> df[~df.Bool] 
    a b Bool 
1 2 3 False 
2 3 2 False 
+0

はい、ここまでは結果がありますが、このデータはFalse値のみに基づいてさらにスライスする必要があります。 ABブール値 1 2 3偽 2 3 2偽 –

+0

アレクサンダー - 返事のおかげで、私が述べたように、結果を得るdin't ... 私の元のコードは次のとおりです。 Delta_check [〜Delta_check.bool] 私は を取得しましたTypeError:unary〜のための悪いオペランドの型: 'method' –

+0

あなたの列の正確な名前は何ですか? – Alexander

1

Iドンあなたの状況を知っている、私は "FutureWarningを取得する:ブール配列のお気に入りはブール配列インデックスとして処理されます"私は以下のようなコードを使用すると:

>>> import numpy as np 
>>> test=np.array([1,2,3]) 
>>> test3=test[[False,True,False]] 
__main__:1: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index 
>>> test3=test[np.array([False,True,False])] 
>>> test3 
array([2]) 
>>> 

私はこれらの2つの "FutureWarning"の間にいくつかの関係があると思います、私はあなたの状況があなたを助けることを願っています。

関連する問題