programing

Panda를 사용하여 열의 최대값 찾기 및 해당 행 값 반환

stoneblock 2023. 6. 8. 19:15

Panda를 사용하여 열의 최대값 찾기 및 해당 행 값 반환

데이터의 구조

Python Pandas를 사용하여 저는 그것을 찾으려고 노력하고 있습니다.Country&Place최대치로

최대값을 반환합니다.

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

하지만 어떻게 그에 상응하는 정보를 얻을 수 있습니까?Country그리고.Place이름?

가정하면df에는 고유한 인덱스가 있으며, 이는 최대 값을 가진 행을 제공합니다.

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

인덱스 레이블을 반환합니다.따라서 데이터 프레임에 인덱스에 중복이 있는 경우 레이블이 행을 고유하게 식별하지 못할 수 있습니다.df.loc둘 이상의 행을 반환할 수 있습니다.

그러므로, 만약df에는 고유한 인덱스가 없으므로 위와 같이 진행하기 전에 인덱스를 고유하게 만들어야 합니다.데이터 프레임에 따라 다음을 사용할 수도 있습니다.stack또는set_index인덱스를 고유하게 만듭니다.또는 인덱스를 재설정하기만 하면 됩니다(행 번호가 0부터 다시 지정되도록).

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

최대값이 있는 전체 행을 반환합니다.

최대값이 있는 행을 반환하는 가장 쉬운 방법은 인덱스를 가져오는 것이라고 생각합니다. argmax()값이 가장 큰 행의 인덱스를 반환하는 데 사용할 수 있습니다.

index = df.Value.argmax()

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

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

국가와 장소가 시리즈의 인덱스입니다. 인덱스가 필요하지 않으면 설정할 수 있습니다.as_index=False:

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

편집:

모든 국가에 대해 최대값이 있는 장소를 원하는 것 같습니다. 다음 코드를 사용하면 원하는 작업이 수행할 수 있습니다.

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

사용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()])

사용할 수 있는 항목:

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

사용.

이를 위한 전용 방법은 다음과 같습니다.nlargest이는 백그라운드에서 사용되며, 성능이 뛰어난 방법입니다.sort_values().head(n)

   x  y  a  b
0  1  2  a  x
1  2  4  b  x
2  3  6  c  y
3  4  1  a  z
4  5  2  b  z
5  6  3  c  z
df.nlargest(1, 'y')

   x  y  a  b
2  3  6  c  y

수입 판다
df는 사용자가 생성하는 데이터 프레임입니다.

다음 명령을 사용합니다.

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

값이 최대값인 국가와 장소가 표시됩니다.

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

df.ix[df.idxmax()]

최소:

df.ix[df.idxmin()]

를 사용하는 것이 좋습니다.nlargest더 나은 성능과 더 짧은 코드를 위해.수입품pandas

df[col_name].value_counts().nlargest(n=1)

판다를 사용하여 데이터를 가져오는 동안 유사한 오류가 발생했습니다. 데이터 집합의 첫 번째 열에 단어가 시작되기 전에 공백이 있습니다.저는 공간을 제거했고 그것은 매력적으로 작동했습니다!!

언급URL : https://stackoverflow.com/questions/15741759/find-maximum-value-of-a-column-and-return-the-corresponding-row-values-using-pan