2017-01-27 3 views
3

私はPythonにはかなり新しいです。私はR.で複数のフィルタPython Data.frame

sub_df = df[df[main_id]==3] 

作品がそうであるようにdata.frameで行をフィルタしようとしているが、

df[df[main_id] in [3,7]] 

は私の

」真理値を誤差与えますシリーズがあいまいです "

同様の選択肢を記述する正しい構文を教えてください。

+0

を含めることはできますか? 'print(df.head())'の出力? – MYGz

答えて

1
df[df[main_id].apply(lambda x: x in [3, 7])] 
3

パンダisinの機能を使用できます。これは、次のようになります。

import pandas as pd 

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

寄付:

A B 
1 2 b 
2 3 f 
+0

ありがとう、これは決断的だった – Carlo

1

さらに別の解決策:あなたは、元のデータフレームを

In [60]: df = pd.DataFrame({'main_id': [0,1, 2, 3], 'x': list('ABCD')}) 

In [61]: df 
Out[61]: 
    main_id x 
0  0 A 
1  1 B 
2  2 C 
3  3 D 

In [62]: df.query("main_id in [0,3]") 
Out[62]: 
    main_id x 
0  0 A 
3  3 D