2014-06-13 7 views
5

해당 열에서 음수 값을 포함하는 모든 인덱스를 제거 할 수있는 방법이 궁금합니다. 팬더 DataFrames을 사용하고 있습니다.Python Pandas : DataFrame 필터 음수 값

Documentation Pandas DataFrame

형식 :

MYID - valuecol1 - valuecol2 - valuecol3 -... valuecol30

그래서 내 DataFrame가 호출 data

나는 1 열이 작업을 수행하는 방법을 알고 :

data2 = data.index[data['valuecol1'] > 0] 
data3 = data.ix[data3] 

그래서 난 단지, 내가 어떻게 and 문 어떤 종류의 작업을 수행 할 수 있습니다 valuecol1 > 0 ID를 얻을?

valuecol1 && valuecol2 && valuecol3 && ... && valuecol30 > 0?

답변

3

당신은 할 수 당신은 전체 행 또는 열을 확인 all을 사용할 수 있습니다

for cols in data.columns.tolist()[1:]: 
    data = data.ix[data[cols] > 0] 
+0

감사합니다 당신이 아주 많이. 이것은 작동하는 것 같습니다. – zer02

5

열 이름 돌이은 True입니다 :

In [11]: df = pd.DataFrame(np.random.randn(10, 3)) 

In [12]: df 
Out[12]: 
      0   1   2 
0 -1.003735 0.792479 0.787538 
1 -2.056750 -1.508980 0.676378 
2 1.355528 0.307063 0.369505 
3 1.201093 0.994041 -1.169323 
4 -0.305359 0.044360 -0.085346 
5 -0.684149 -0.482129 -0.598155 
6 1.795011 1.231198 -0.465683 
7 -0.632216 -0.075575 0.812735 
8 -0.479523 -1.900072 -0.966430 
9 -1.441645 -1.189408 1.338681 

In [13]: (df > 0).all(1) 
Out[13]: 
0 False 
1 False 
2  True 
3 False 
4 False 
5 False 
6 False 
7 False 
8 False 
9 False 
dtype: bool 

In [14]: df[(df > 0).all(1)] 
Out[14]: 
      0   1   2 
2 1.355528 0.307063 0.369505 

것은 당신 만의 하위 집합을보고 싶다면 열, 예. [0, 1] :

In [15]: df[(df[[0, 1]] > 0).all(1)] 
Out[15]: 
      0   1   2 
2 1.355528 0.307063 0.369505 
3 1.201093 0.994041 -1.169323 
6 1.795011 1.231198 -0.465683 
0

당신이 열 번째로 두 번째에서 예를 들어, 열 인접한 그룹의 값을 확인하려면 다음

df[(df.ix[:,2:10] > 0).all(1)] 

또한 범위를 사용할 수 있습니다

df[(df.ix[:,range(1,10,3)] > 0).all(1)] 

및 색인의 자체 목록

mylist=[1,2,4,8] 
df[(df.ix[:, mylist] > 0).all(1)] 
2

데이터 프레임 내에서 문을 사용하려면 단일 & 문자를 사용하고 각 조건을 괄호로 구분하면됩니다. 예를 들어

:

data = data[(data['col1']>0) & (data['valuecol2']>0) & (data['valuecol3']>0)] 
관련 문제