>source

다음과 같은 데이터가 있다고 가정 해 보겠습니다.

df = pd.DataFrame({'category': ["blue","blue","blue", "blue","green"], 'val1': [5, 3, 2, 2, 5], 'val2':[1, 3, 2, 2, 5]})
print(df)
  category  val1  val2
0     blue     5     1
1     blue     3     3
2     blue     2     2
3     blue     2     2
4    green     5     5

값이 3보다 큰 행을 가져오고 싶습니다. 여기에 두 개의 열만있는 예를 들어

df.loc[(df['val1'] > 3) | (df['val2'] > 3)]
    category    val1    val2
0   blue    5   1
4   green   5   5

이제 많은 양의 (숫자) 열이있는 데이터 세트가 있고 숫자 열의 값이 조건 (예 :>3)을 충족하는 모든 행을 가져오고 싶다고 가정 해 보겠습니다. 여러 열을 연결하지 않고도 조건을 확인하는 방법이 있습니까? | ?

예를 들어 val1에서 valn까지 n 개의 열이있는 데이터 프레임이 있고 val1에서 valn까지의 값이>3 인 모든 행을 원한다고 가정 해 보겠습니다. 더 나은 방법/짧은 방법이 있습니까?

df.loc[(df['val1'] > 3) | (df['val2'] > 3) | ... | (df['valn'] > 3)]

?


  • 답변 # 1

    아래와 같이 df.any ()를 사용할 수 있습니다. 이것은 모든 열에 대해 작동합니다 (첫 번째 열 'category'는 숫자가 아니므로 무시합니다).

    res=df[(df.iloc[:,1:] >3).any(axis=1)]
    
    

    현재 데이터 프레임의 결과는 다음과 같습니다.

    >>>print(res)
      category  val1  val2
    0     blue     5     1
    4    green     5     5
    
    

  • 답변 # 2

    테스트에 선택한 열만 사용

    checkColumns = ['val1','val2','val3','val25']
    dfSub = df.loc[df[checkColumns].gt(3).any(1)]
    
    

관련 자료

  • 이전 python - 팀 규모 계산 - warzone :듀오
  • 다음 PHP를 사용하여 jsonp에서 가치 얻기