2016-05-11 8 views
0

DataFrameには34列と約10k行あります。pandas isin()を使用してデータフレーム内のある範囲の列の値をテストする方法

df = df[df.iloc[:,2:33].isin([0,1])] 

しかし、私は予期しない結果を得る:私は、私は次のことを試してみた値がcolumnindex位置に33

2〜0または1で行だけを維持したいです。いくつかの列が返されますNaN

助けていただけたら幸いです!おかげで...

+0

は、顔をしていると見ます実際に使用しているコードと一致する場合最後に ']'があるはずですか? – Jezzamon

答えて

0

セットアップ

df = pd.DataFrame(np.random.rand(10000, 5)*10, columns=list('ABCDE')).astype(int) 

ソリューション

df[((df == 0) | (df == 1)).any(axis=1)] 

あなたの問題

あなたが投稿したコードの構文エラーがあるようです
df[((df.iloc[:,2:33] == 0) | (df.iloc[:,2:33] == 1)).any(axis=1)] 
+0

私はいくつかのデータ型の問題があることが判明しました。以前はnullを取り除いていましたが、空白文字がいくつかあった行がいくつかありました。これらがなくなると、私はすべてのデータ型をintにして、piRSquaredの例が働きました。 – Clickitysplit

+0

私が変更した重要なことの1つは、df [(df.iloc [:、2:5] <= 1).all(axis = 1)]のようにany()をall() – Clickitysplit

関連する問題