조건으로 정의 된 가변 행 범위에서 로컬 최대 / 최소 값을 가져 오나요?

거스

다음 질문이 있습니다. 때때로 양수이고 때로는 음수 인 값이있는 히스토그램이있는 열이있는 팬더의 시계열을 작업 중입니다. 데이터 프레임의 새 열을 양수에서 음수에서 마지막 시간까지 변하는 순간의 행 번호의 차이이기 때문에 지속적으로 변경되는 시간 또는 범위의 각 창에 대한 로컬 최대 / 최소 값으로 채워야합니다. 부정적에서 긍정적으로 그리고 그 반대로 바뀌 었습니다. 효율성을 위해 pandas 또는 numpy 방법도 사용해야합니다.

다음과 같이 마지막으로 양수에서 음수로 또는 그 반대로 변경된 행 위치로 채워진 df.loc로 보조 열을 만들어 실험했습니다.

df.loc[(df.Histogram.shift(1) > 0) & (df.Histogram < 0), 'LOC'] = df.index.get_loc(df.Histogram)
df.LOC.fillna(method='ffill')

(오류가 발생했습니다) 나중에 이러한 행 위치 간의 차이를 계산하여 현재 최대 / 최소 시간 창을 정의한 다음 df.Histogram.rolling (loc_differences) .max () 메서드를 적용하려고했지만 만들지 못했습니다. .rolling은 고정 창 값 만 허용하고 열을 위치로 채울 수 없기 때문에 작동합니다. 이에 대한 간단한 해결책이 있어야한다는 것을 알고 있습니다. 이것은 내가 찾고있는 것의 예입니다.

Date             Histogram     Max/Min Value
01/02/2021         0.2            0.7
02/02/2021         0.3            0.7
03/02/2021         0.7            0.7
04/02/2021         0.2            0.7
05/02/2021        -0.2           -0.5
06/02/2021        -0.5           -0.5
07/02/2021        -0.1           -0.5
08/02/2021         0.4            0.4
09/02/2021         0.3            0.4
10/02/2021        -0.2           -0.2 
11/02/2021         0.2            0.7 
12/02/2021         0.7            0.7
13/02/2021         0.2            0.7
14/02/2021         0.3            0.7
15/02/2021         0.6            0.7
16/02/2021         0.2            0.7
17/02/2021        -0.2           -0.5
18/02/2021        -0.5           -0.5
19/02/2021        -0.1           -0.5
20/02/2021         0.4            0.4
21/02/2021         0.3            0.4
22/02/2021        -0.2           -0.3
23/02/2021        -0.1           -0.3 
24/02/2021        -0.3           -0.3
25/02/2021        -0.1           -0.3 
16/02/2021         0.2            0.3
27/02/2021         0.1            0.3    
28/02/2021         0.3            0.3

이에 대한 해결책이 있습니까? 미리 감사드립니다.

루카스 탈러

다음은 히스토그램 데이터를 양수 / 음수 값 그룹으로 분할하는 편리한 방법입니다. grp열이 증가 할 때마다 히스토그램 열은 부호를 변경하고 동일한 grp값을 가진 모든 행 은 두 부호 변경 사이의 동일한 간격에 속합니다.

df['grp'] = (df.Histogram > 0).astype(int).diff().abs().cumsum().fillna(0)

df.head(10)
          Date  Histogram  grp
0   01/02/2021        0.2  0.0
1   02/02/2021        0.3  0.0
2   03/02/2021        0.7  0.0
3   04/02/2021        0.2  0.0
4   05/02/2021       -0.2  1.0
5   06/02/2021       -0.5  1.0
6   07/02/2021       -0.1  1.0
7   08/02/2021        0.4  2.0
8   09/02/2021        0.3  2.0
9   10/02/2021       -0.2  3.0

의 선택 (df.Histogram > 0)은 임의적이며 0을 음수 값으로 계산합니다. 히스토그램 시퀀스는 0.2, 0, 0.4, 0.3그룹을 생성 [0, 1, 2, 2]하고 시퀀스 -0.2, 0, -0.4, -0.3는 단일 그룹을 생성합니다. 이것이 문제에 적합한 지 여부를 결정해야합니다.

에서 반환 한 첫 번째 행에 대해 발생할을 ( .fillna(0)를) 채울 NaN수 있습니다 .diff(). 0 대체 값의 선택은 정당합니다. 첫 번째 행에서 두 번째 행으로 부호가 변경되면 grp행 2에서 1이되고 행 1을 자체 그룹에 올바르게 배치합니다. 부호가 변경되지 않은 경우 grp2 행에서 0이되고 1 행과 올바르게 그룹화됩니다.

이제 다음 groupby과 같이 사용하여 그룹당 최소 / 최대 값을 계산할 수 있습니다.

minmax = df.groupby('grp', as_index=False)['Histogram'].agg(
    {'hist_min': min, 'hist_max': max})
df = df.merge(minmax, on='grp')

df.head(10)
         Date  Histogram  grp  hist_min  hist_max
0  01/02/2021        0.2  0.0       0.2       0.7
1  02/02/2021        0.3  0.0       0.2       0.7
2  03/02/2021        0.7  0.0       0.2       0.7
3  04/02/2021        0.2  0.0       0.2       0.7
4  05/02/2021       -0.2  1.0      -0.5      -0.1
5  06/02/2021       -0.5  1.0      -0.5      -0.1
6  07/02/2021       -0.1  1.0      -0.5      -0.1
7  08/02/2021        0.4  2.0       0.3       0.4
8  09/02/2021        0.3  2.0       0.3       0.4
9  10/02/2021       -0.2  3.0      -0.2      -0.2

마지막으로 부울 인덱싱을 사용하여 원하는 값을 조합 할 수 있습니다.

df['minmax'] = df.hist_min
df.loc[df.Histogram > 0, 'minmax'] = df.hist_max[df.Histogram > 0]

df.head(10)
         Date  Histogram  grp  hist_min  hist_max  minmax
0  01/02/2021        0.2  0.0       0.2       0.7     0.7
1  02/02/2021        0.3  0.0       0.2       0.7     0.7
2  03/02/2021        0.7  0.0       0.2       0.7     0.7
3  04/02/2021        0.2  0.0       0.2       0.7     0.7
4  05/02/2021       -0.2  1.0      -0.5      -0.1    -0.5
5  06/02/2021       -0.5  1.0      -0.5      -0.1    -0.5
6  07/02/2021       -0.1  1.0      -0.5      -0.1    -0.5
7  08/02/2021        0.4  2.0       0.3       0.4     0.4
8  09/02/2021        0.3  2.0       0.3       0.4     0.4
9  10/02/2021       -0.2  3.0      -0.2      -0.2    -0.2

전체 프로세스는 가능한 한 벡터화되므로 성능이 적절해야합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PostgreSQL-최소 최대 값으로 모든 행 가져 오기

분류에서Dev

SQL의 열 값을 기반으로 SQL에서 최대 또는 최소 날짜 가져 오기

분류에서Dev

SQL 계산 된 열의 최소값을 기준으로 전체 행 가져 오기

분류에서Dev

Numpy.argpartition을 사용하여 정렬 된 순서로 각 열의 k- 최소값 가져 오기

분류에서Dev

우선 순위 필드가있는 조인 된 mysql 테이블에서 최대 / 최소 값 가져 오기

분류에서Dev

Postgres : 한 번의 선택으로 최소, 최대, 집계 값 가져 오기

분류에서Dev

명명 된 범위의 셀에 대한 행과 열을 가져 오나요?

분류에서Dev

두 개의 열로 그룹화 된 최소 / 최대 가져 오기

분류에서Dev

행렬 (R)에있는 다른 열의 최대 값에 해당하는 한 열의 값을 가져 오나요?

분류에서Dev

정의 된 수준에 배치 된 특정 값으로 최소 최대 범위 지정

분류에서Dev

SQL Server에서 범위의 최대 날짜 값 가져 오기

분류에서Dev

table2의 조건을 충족하는 것으로 발견 된 N 개의 최대 레코드 하위 쿼리를 사용하여 table1의 각 행의 결과를 가져 오는 쿼리

분류에서Dev

데이터 프레임의 특정 열에서 최소값으로 행을 가져 오는 가장 좋은 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

줄리아 : 특정 축을 따라 다차원 배열의 범위 (최소 / 최대 값) 가져 오기

분류에서Dev

Postgres 레코드의 행에서 최대 값을 가져오고 여러 열로 그룹화합니다.

분류에서Dev

[Python] 무작위로 생성 된 행렬에서 첫 번째, 두 번째, 세 번째 등 행의 최대 값을 가져와이 최대 값으로 벡터 생성

분류에서Dev

여러 행 이벤트에서 최소값과 최대 값 가져 오기

분류에서Dev

Excel : 변수 범위에서 최대 값 가져 오기

분류에서Dev

날짜 범위 사이의 각 행에 대한 최소 및 최대 날짜 시간 가져 오기

분류에서Dev

행의 값을 가장 가까운 최대 값으로 나누기

분류에서Dev

열 및 날짜 범위로 최대 행 가져 오기

분류에서Dev

여러 열을 기반으로 각 그룹에서 최대 값으로 행 가져 오기

분류에서Dev

프롤로그의 목록 목록에서 최대 요소 가져 오기

분류에서Dev

jQuery UI의 datepicker의 beforeShow 메서드에서 정규화 된 최소 / 최대 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

행렬에서 두 값 사이의 로컬 최소값과 로컬 최대 값 찾기

분류에서Dev

Excel에서 사용자 지정 목록으로 셀 배열의 최대 값을 가져 오는 수식

분류에서Dev

다른 제약 조건과 결합 된 행의 최소값 인덱스 가져 오기

분류에서Dev

데이터베이스 asp.net에서 범위 유효성 검사기의 최대 값을 동적으로 가져와 int로 변환

Related 관련 기사

  1. 1

    PostgreSQL-최소 최대 값으로 모든 행 가져 오기

  2. 2

    SQL의 열 값을 기반으로 SQL에서 최대 또는 최소 날짜 가져 오기

  3. 3

    SQL 계산 된 열의 최소값을 기준으로 전체 행 가져 오기

  4. 4

    Numpy.argpartition을 사용하여 정렬 된 순서로 각 열의 k- 최소값 가져 오기

  5. 5

    우선 순위 필드가있는 조인 된 mysql 테이블에서 최대 / 최소 값 가져 오기

  6. 6

    Postgres : 한 번의 선택으로 최소, 최대, 집계 값 가져 오기

  7. 7

    명명 된 범위의 셀에 대한 행과 열을 가져 오나요?

  8. 8

    두 개의 열로 그룹화 된 최소 / 최대 가져 오기

  9. 9

    행렬 (R)에있는 다른 열의 최대 값에 해당하는 한 열의 값을 가져 오나요?

  10. 10

    정의 된 수준에 배치 된 특정 값으로 최소 최대 범위 지정

  11. 11

    SQL Server에서 범위의 최대 날짜 값 가져 오기

  12. 12

    table2의 조건을 충족하는 것으로 발견 된 N 개의 최대 레코드 하위 쿼리를 사용하여 table1의 각 행의 결과를 가져 오는 쿼리

  13. 13

    데이터 프레임의 특정 열에서 최소값으로 행을 가져 오는 가장 좋은 방법은 무엇입니까?

  14. 14

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

  15. 15

    줄리아 : 특정 축을 따라 다차원 배열의 범위 (최소 / 최대 값) 가져 오기

  16. 16

    Postgres 레코드의 행에서 최대 값을 가져오고 여러 열로 그룹화합니다.

  17. 17

    [Python] 무작위로 생성 된 행렬에서 첫 번째, 두 번째, 세 번째 등 행의 최대 값을 가져와이 최대 값으로 벡터 생성

  18. 18

    여러 행 이벤트에서 최소값과 최대 값 가져 오기

  19. 19

    Excel : 변수 범위에서 최대 값 가져 오기

  20. 20

    날짜 범위 사이의 각 행에 대한 최소 및 최대 날짜 시간 가져 오기

  21. 21

    행의 값을 가장 가까운 최대 값으로 나누기

  22. 22

    열 및 날짜 범위로 최대 행 가져 오기

  23. 23

    여러 열을 기반으로 각 그룹에서 최대 값으로 행 가져 오기

  24. 24

    프롤로그의 목록 목록에서 최대 요소 가져 오기

  25. 25

    jQuery UI의 datepicker의 beforeShow 메서드에서 정규화 된 최소 / 최대 값을 가져 오는 방법은 무엇입니까?

  26. 26

    행렬에서 두 값 사이의 로컬 최소값과 로컬 최대 값 찾기

  27. 27

    Excel에서 사용자 지정 목록으로 셀 배열의 최대 값을 가져 오는 수식

  28. 28

    다른 제약 조건과 결합 된 행의 최소값 인덱스 가져 오기

  29. 29

    데이터베이스 asp.net에서 범위 유효성 검사기의 최대 값을 동적으로 가져와 int로 변환

뜨겁다태그

보관