[python] 열의 최대 값을 찾고 Pandas를 사용하여 해당 행 값을 반환합니다.

데이터 구조

Python Pandas를 사용 하여 최대 값으로 Country& 를 찾으려고합니다 Place.

최대 값을 반환합니다.

data.groupby(['Country','Place'])['Value'].max()

그러나 해당 이름 CountryPlace이름을 어떻게 얻 습니까?



답변

df고유 인덱스가 있다고 가정하면 최대 값이있는 행이 제공됩니다.

In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country        US
Place      Kansas
Value         894
Name: 7

idxmax인덱스 레이블 을 반환합니다 . 따라서 DataFrame의 인덱스에 중복 항목이있는 경우 레이블이 행을 고유하게 식별하지 못할 df.loc수 있으므로 둘 이상의 행을 반환 할 수 있습니다.

따라서 df고유 인덱스가없는 경우 위와 같이 진행하기 전에 인덱스를 고유하게 만들어야합니다. DataFrame에 따라 때로는 인덱스를 사용 stack하거나 set_index고유하게 만들 수 있습니다 . 또는 간단히 인덱스를 재설정 할 수 있습니다 (그러면 행 번호가 0부터 시작됨).

df = df.reset_index()


답변

df[df['Value']==df['Value'].max()]

이것은 최대 값을 가진 전체 행을 반환합니다


답변

국가와 장소는 시리즈의 색인이며 색인이 필요하지 않은 경우 다음을 설정할 수 있습니다 as_index=False.

df.groupby(['country','place'], as_index=False)['value'].max()

편집하다:

모든 국가에 대해 최대 가치를 가진 장소를 원하는 것 같습니다. 다음 코드는 원하는 것을 수행합니다.

df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))


답변

최대 값을 가진 행을 반환하는 가장 쉬운 방법은 인덱스를 얻는 것입니다. argmax()가장 큰 값을 가진 행의 인덱스를 반환하는 데 사용할 수 있습니다.

index = df.Value.argmax()

이제 인덱스를 사용하여 특정 행의 기능을 가져올 수 있습니다.

df.iloc[df.Value.argmax(), 0:2]


답변

index속성을 사용하십시오 DataFrame. 예제의 모든 행을 입력하지는 않습니다.

In [14]: df = data.groupby(['Country','Place'])['Value'].max()

In [15]: df.index
Out[15]:
MultiIndex
[Spain  Manchester, UK     London    , US     Mchigan   ,        NewYork   ]

In [16]: df.index[0]
Out[16]: ('Spain', 'Manchester')

In [17]: df.index[1]
Out[17]: ('UK', 'London')

해당 색인으로 값을 가져올 수도 있습니다.

In [21]: for index in df.index:
    print index, df[index]
   ....:
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562

편집하다

원하는 것을 오해해서 죄송합니다. 다음을 시도해보세요.

In [52]: s=data.max()

In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854


답변

국가 및 장소를 최대 값으로 인쇄하려면 다음 코드 줄을 사용하십시오.

print(df[['Country', 'Place']][df.Value == df.Value.max()])


답변

열에서 최대 값을 찾는 내 솔루션 :

df.ix[df.idxmax()]

, 또한 최소 :

df.ix[df.idxmin()]