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
'programing' 카테고리의 다른 글
표본 데이터에서 신뢰 구간 계산 (0) | 2023.06.13 |
---|---|
Numpy 어레이를 Disk에 보존하는 가장 좋은 방법 (0) | 2023.06.08 |
텍스트 보기에서 링크를 클릭 가능하게 만드는 방법 (0) | 2023.06.08 |
Firefox 브라우저에서 액세스할 때 현장 시간 데이터가 DB에 저장되지 않는 이유는 무엇입니까? (0) | 2023.06.08 |
루비: 문자열을 부울로 변환하는 방법 (0) | 2023.06.08 |