2014-07-15 3 views
2

새로운 프로그래밍에 익숙해졌습니다. 잘하면 내 질문에 명확하게 질문 할 것이고 아마도 나를 안내 할 수 있습니다.팬더 : 데이터 프레임의 모든 열에서 최대 범위를 찾습니다.

나는 데이터 프레임 "x"를 가지고 있는데, 여기서 인덱스는 일주일을 나타내고 각 열은 도시의 숫자 값을 나타냅니다. 최대 범위 (예 : 최대 값 - 최소값)가있는 열을 찾으려고합니다. 이것은 각 열의 최대 값과 최소값을 찾고 객체 (또는 하단의 새 행)에 저장하고 그 객체 (또는 행)에서 최대 값을 찾으려면 루프가 필요할 것이라고 생각할 수 있습니다.

dataframe은 다음과 같습니다 에티켓이나 표현에

 City1 City2 ... CityN 
week 
1 
2 
3 
4 
... 
53 

피드백도 감사합니다.

+0

명확히하기 위해 최대 값이 'max (col) -min (col)'인 열을 찾고 싶습니까? – DSM

+0

예. 범위는 다음과 같습니다. range (col_i) = max (col_i) - min (col_i). – HolaGonzalo

답변

3

(df.max() - df.min()).idxmax() 같은 무언가가 당신에게 최대 열을 얻어야한다 : 최대 범위에서 하나 이상의 열이있을 수 있습니다 경우

>>> df = pd.DataFrame(np.random.random((5,4)), index=pd.Series(range(1,6), name="week"), columns=["City{}".format(i) for i in range(1,5)]) 
>>> df 
     City1  City2  City3  City4 
week           
1  0.908549 0.496167 0.220340 0.464060 
2  0.429330 0.770133 0.824774 0.155694 
3  0.893270 0.980108 0.574897 0.378443 
4  0.982410 0.796103 0.080877 0.416432 
5  0.444416 0.667695 0.459362 0.898792 
>>> df.max() - df.min() 
City1 0.553080 
City2 0.483941 
City3 0.743898 
City4 0.743098 
dtype: float64 
>>> (df.max() - df.min()).idxmax() 
'City3' 
>>> df[(df.max() - df.min()).idxmax()] 
week 
1  0.220340 
2  0.824774 
3  0.574897 
4  0.080877 
5  0.459362 
Name: City3, dtype: float64 

, 당신은 아마 대신

>>> col_ranges = df.max() - df.min() 
>>> df.loc[:,col_ranges == col_ranges.max()] 
     City3 
week   
1  0.220340 
2  0.824774 
3  0.574897 
4  0.080877 
5  0.459362 

같은 것을 할 것입니다.

관련 문제