2017-05-15 3 views
1

私はread_html pandas 'プロパティから得た以下のデータフレームを持っています。データフレームの値をフィルタリングするときに同じ初期入力を返す

A        1.48        2.64    1.02         2.46   2.73 
B       658.4        14.33    7.41        15.35   8.59 
C        3.76         2.07    4.61         2.26   2.05 
D   513854.86         5.70    0.00         5.35  30.16 

私は150の上に私はdf1= df[df > 150]をやっている行を削除したいと思います、しかし、それは同じテーブルを返します。

その後、私はルートroute = pd.read_html(https//route , decimal='.')の小数点に含めると考えて、フィルタなしで同じ初期データフレームを返すことを続けます。

これは私の所望の出力のようになります。

A        1.48        2.64    1.02         2.46   2.73 
C        3.76         2.07    4.61         2.26   2.05 

答えて

1

必要があります。

print (df) 
    0   1  2  3  4  5 
0 A  1.48 2.64 1.02 2.46 2.73 
1 B  658.40 14.33 7.41 15.35 8.59 
2 C  3.76 2.07 4.61 2.26 2.05 
3 D 513854.86 5.70 0.00 5.35 30.16 

df1 = df[~(df.iloc[:, 1:] > 150).any(1)] 
print (df1) 
    0  1  2  3  4  5 
0 A 1.48 2.64 1.02 2.46 2.73 
2 C 3.76 2.07 4.61 2.26 2.05 

または:

df1 = df[(df.iloc[:, 1:] <= 150).all(1)] 
print (df1) 
    0  1  2  3  4  5 
0 A 1.48 2.64 1.02 2.46 2.73 
2 C 3.76 2.07 4.61 2.26 2.05 

説明:

まずによって最初せずにすべての列を選択:

print (df.iloc[:, 1:]) 
      1  2  3  4  5 
0  1.48 2.64 1.02 2.46 2.73 
1  658.40 14.33 7.41 15.35 8.59 
2  3.76 2.07 4.61 2.26 2.05 
3 513854.86 5.70 0.00 5.35 30.16 

そして比較 - ブールDATAFRAME得る:少なくとも1つの値がTrueある場合、行のすべての値をチェックするためのTrue S
又はanyをしているかどうかを確認するためallを使用その後

print (df.iloc[:, 1:] > 150) 
     1  2  3  4  5 
0 False False False False False 
1 True False False False False 
2 False False False False False 
3 True False False False False 

print (df.iloc[:, 1:] <= 150) 
     1  2  3  4  5 
0 True True True True True 
1 False True True True True 
2 True True True True True 
3 False True True True True 

ました:

print ((df.iloc[:, 1:] > 150).any(1)) 
0 False 
1  True 
2 False 
3  True 
dtype: bool 

print ((df.iloc[:, 1:] <= 150).all(1)) 
0  True 
1 False 
2  True 
3 False 
dtype: bool 

最後の最初Seriesは、~で反転し、フィルタはboolean indexingである。

+0

こんにちは@jezraelあなたの助けをありがとう!私が直面している問題は、 'df.iloc [:, 1:]> 150'を試してみると、すべての列が真であることがわかります。どうすればこの問題を克服できますか? – ge00rge

+0

喜んで助けることができます;)素敵な一日! – jezrael

関連する問題