2017-05-15 3 views
1

다음 데이터 프레임을 read_html 팬더 속성에서 가져 왔습니다.데이터 프레임의 값을 필터링 할 때 동일한 초기 입력을 반환합니다.

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 수 : 행의 모든 ​​값이있는 경우

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 

그런 다음 확인을 위해 all를 사용을 True
또는 검사에 대한 any 적어도 하나 개의 값이 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

안녕하세요 @ jeszrael는 너무 많은 도움을 주셔서 감사합니다! 내가 직면하고있는 문제는'df.iloc [:, 1 :]> 150'이 모든 컬럼이 사실이라는 것을 알았을 때 어떻게이 문제를 극복하기 위해 할 수 있다고 생각합니까? – ge00rge

+0

기쁘다 도울 수 있습니다;) 좋은 하루! – jezrael

관련 문제