pandas 그룹 정렬에서 두 번째로 큰 데이터를 얻는 방법
1. 데이터는 내가 직접 작성한 것이다
실제 작업에서 데이터베이스에서 데이터를 가져와야 합니다. 데이터베이스에서 데이터를 어떻게 내보내는지 제가 나중에 보충하겠습니다.
import pandas as pd
df = pd.DataFrame([
{"class": 1, "name": "aa", "english": 120},
{"class": 1, "name": "bb", "english": 110},
{"class": 1, "name": "cc", "english": 110},
{"class": 1, "name": "dd", "english": 110},
{"class": 2, "name": "ee", "english": 120},
{"class": 2, "name": "ff", "english": 140},
{"class": 2, "name": "gg", "english": 130},
{"class": 2, "name": "hh", "english": 130},
{"class": 3, "name": "tt", "english": 130},
{"class": 4, "name": "xx", "english": 130},
{"class": 4, "name": "yy", "english": 130},
{"class": 5, "name": "zz", "english": None},
])
2. 두 번째로 큰 데이터를 그룹화
def fun(df):
# english
sort_set = set(df["english"].values.tolist())
if len(sort_set)<=1:
# 1,
return None
else:
# english
sort_value = sorted(sort_set,reverse=True)[1]
temp_df = df[df["english"]==sort_value]
return temp_df
df = df.groupby(by=["class"]).apply(fun).reset_index(drop=True)
print(df)
결과는 다음과 같습니다.
class name english
0 1 bb 110.0
1 1 cc 110.0
2 1 dd 110.0
3 2 gg 130.0
4 2 hh 130.0
3. 다 썼어요. 이렇게 간단해요.
물론 이것은 최대, 최소, 3대 등으로 바뀔 수도 있지만...
추가: pandas는 어떤 열의 A로 정렬하고, B와 C 두 열로 그룹을 나누며, 그룹을 선택한 후 A열의 값이 가장 큰 줄을 선택한다
pandas는 어떤 열의 A로 정렬하고, B와 C 두 열로 그룹을 나누며, 그룹을 나누면 A열의 값이 가장 큰 줄을 선택한다
수요
updateTime 열에 따라 역순으로 정렬하고, B와 C 두 열에 따라 그룹을 나누고, 그룹을 나눈 후 마지막 업데이트 시간의 줄을 선택하고, 결과를 새 인덱스로 추가합니다.
코드
import pandas as pd
data = pd.read_csv('test.csv')
df = pd.DataFrame(data)
df = df.sort_values('updateTime', ascending=False).groupby(['B','C']).first().reset_index()
first () 함수는 첫 번째 줄을 선택하는 것을 대표합니다. 여러 줄을 선택하려면head () 함수:head (5) 를 사용하여 첫 번째 줄을 선택할 수 있습니다.다음 예제:
import pandas as pd
data = pd.read_csv('test.csv',header = 0)
df = pd.DataFrame(data)
# , value ,
df = df.groupby('date', group_keys=False).apply(lambda x: x.sort_values('value', ascending=False)).groupby('date').head(10).reset_index()
sort_를 직접 사용할 수 없습니다.values () 함수를 사용할 때 apply () 함수를 사용합니다.이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Pandas】DatetimeIndex란? no.29안녕하세요, 마유미입니다. Pandas에 대한 기사를 시리즈로 작성하고 있습니다. 이번은 제29회의 기사가 됩니다. 에서 Pandas의 시간에 대한 모듈에 대해 씁니다. 이번 기사에서는, 「DatetimeIndex」...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.