조건이 충족되는 행에 대한 열의 최대 값 가져 오기

안나

다음과 같은 DataFrame이 있습니다.

| Age | Married | OwnsHouse |
| 23  | True    | False     |
| 35  | True    | True      |
| 14  | False   | False     |
| 27  | True    | True      |

나는 결혼하고 집을 소유 한 사람 중 가장 높은 나이를 찾고 싶습니다. 여기에 대한 답은 35가 될 것입니다. 내 첫 번째 생각은 다음과 같습니다.

df_subset = df[df['Married'] == True and df['OwnsHouse'] == True]
max_age = df_subset.max()

그러나 데이터 세트가 크며 (50MB) 데이터 세트를 두 번 통과하므로 계산 비용이 많이 들지 않을까 걱정됩니다.

두 번째 생각은 다음과 같습니다.

max_age = 0
for index, row in df.iterrows():
    if(row[index]['Married] and row['index']['OwnsHouse'] and row[index]['Age] > max_age):
    max_age = row[index]['Age']

이 작업을 수행하는 더 빠른 방법이 있습니까?

cs95

첫 번째 접근 방식은 견고하지만 다음은 간단한 옵션입니다.

df[df['Married'] & df['OwnsHouse']].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

또는 나이 :

df.loc[df['Married'] & df['OwnsHouse'], 'Age'].max()
# 35

부울 열이 여러 개인 경우 좀 더 확장 가능한 것을 제안합니다.

df[df[['Married', 'OwnsHouse']].all(axis=1)].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

어디,

df[['Married', 'OwnsHouse']].all(axis=1)

0    False
1     True
2    False
3     True
dtype: bool

그것은 다음과 같습니다.

df['Married'] & df['OwnsHouse']

0    False
1     True
2    False
3     True
dtype: bool

그러나 N 개의 부울 마스크의 AND를 수동으로 찾는 대신에 .all그렇게하십시오.

query 또 다른 옵션입니다.

df.query("Married and OwnsHouse")['Age'].max()
# 35

마스크를 계산하는 중간 단계가 필요하지 않습니다.


귀하의 방법은 충분히 빠르지 만 미세 최적화를 원한다면 다음과 같은 numpy 옵션이 더 있습니다.

# <= 0.23
df[(df['Married'].values & df['OwnsHouse'].values)].max()
df[df[['Married', 'OwnsHouse']].values.all(axis=1)].max()
# 0.24+
df[(df['Married'].to_numpy() & df['OwnsHouse'].to_numpy())].max()
df[df[['Married', 'OwnsHouse']].to_numpy().all(axis=1)].max()

Age          35.0
Married       1.0
OwnsHouse     1.0
dtype: float64

당신은 아마도 나이를 원할 것입니다. 이 작업을 수행

df.loc[(df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()), 'Age'].max()
# 35

좀 더 numpy를 원한다면 다음을 수행하십시오.

df.loc[(
   df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()), 'Age'
].to_numpy().max()
# 35

또는 더 나은 방법은 판다를 버리고

df['Age'].to_numpy()[df['Married'].to_numpy() & df['OwnsHouse'].to_numpy()].max()
# 35

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

조건이 충족되는 mysql에서 행 수와 1 쿼리의 최대 값 가져 오기

행 조건이있는 최대 값 열 가져 오기

TSQL : 열에 대한 최대 값이있는 행 가져 오기

이후 모든 값에 대해 조건이 충족되는 조건 문의 최소값 찾기

다른 데이터 프레임의 행에 대해 조건이 충족되는 특정 열의 값 바꾸기

Pandas DataFrame의 특정 행에 대한 최대 값의 열 이름 가져 오기

열에있는 행의 하위 집합에 대한 최대 값 가져 오기

조건이 충족되면 목록 목록의 최대 요소 가져 오기

Postgresql-열에 최대 값이있는 행 가져 오기

for 루프의 조건이 충족되면 동일한 행의 다른 셀에서 값 가져오기

최소값이 조건을 충족하는 경우 2D np.array의 각 행에 대한 최소값 인덱스를 가져옵니다.

DF의 최대 값에 대한 색인 이름 가져 오기

SQL 두 열에 대해 최대값이 있는 행 가져오기

두 열 값에 대한 조건을 충족하는 배열 행 찾기

MySQL의 특정 조건에 대한 최상의 테이블 행 가져오기

다른 열의 고유 값에 대한 최대 값 행 가져 오기 : Python

if 조건으로 다른 열의 최대 값 가져 오기

다른 데이터 프레임의 열 이름과 일치하는 다른 조회 열에 대한 조건부 조회 열에서 값 가져오기

조건에 따라 배열에서 최소 / 최대 값 가져 오기

다른 열의 조건이 충족되는 경우에만 2 값 열의 값을 반대 값으로 변경

행 가져 오기에 MySQL의 최대 값이 있습니까?

최대 열 값에서 고유한 행 가져오기

Excel에서 if 조건에 대한 열 값 가져오기

SQL 조인 조건이 충족되는 동일한 키 값의 그룹에서 일대 다 추출 값

모든 행에 대한 새 열로 행 창에서 최대 값 가져 오기

배열의 특정 조건에 대해 최소 두 개의 값이있는 문서 가져 오기, MongoDB의 쿼리

다른 열의 값이 조건을 충족하는 경우에만 열의 분위수 가져 오기

SQL: 일부 'x' 열 값이 최대 값인 행 가져오기

테이블에서 최소값과 최대 값이있는 2 개의 행 가져 오기

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관