일부 GroupBy 조건이 충족되면 원본 Pandas 데이터 프레임에서 행 삭제

SLater01

일부 조건이 충족 될 때 Dataframe에서 특정 행을 삭제하는 빠른 Pandas 접근 방식을 구성하려고합니다. 특히, 해당 행의 다른 값이 0 인 경우 데이터 프레임에서 일부 변수의 첫 번째 발생을 삭제하고 싶습니다. 이것은 아마도 예를 통해 가장 쉽게 설명 할 수 있습니다.

foo = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
bar = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1])
df = pd.DataFrame({'foo': foo, 'bar':bar}) 

# So df is:
idx | foo | bar
0   1   1
1   1   0
2   1   1
3   1   0
4   1   1
5   1   0
6   1   1
7   1   0
8   1   1
9   1   0
10  1   1
11  2   0
12  2   1
13  2   0
14  2   1
15  3   1
16  3   1
17  3   0
18  3   1

'foo'열이 새 값일 때 첫 번째 행을보고 해당 행의 'bar'값이 0이면 데이터 프레임에서 삭제하고 싶습니다.

groupby를 사용하여이 조건이 충족되는시기를 찾을 수 있습니다.

df.groupby('foo').first()

# Result:
    bar
foo 
1   1
2   0
3   1

따라서 foo = 2 일 때 첫 번째 행을 삭제해야한다는 것을 알았습니다 (즉, 원래 데이터 프레임에서 index = 11 인 행을 삭제하면됩니다). 그러나 모양 / 크기가 다르기 때문에이 groupby 결과를 원래 데이터 프레임의 마스크로 사용하는 방법을 알아낼 수 없습니다.

groupby 수정 ( groupby () 조건에 따라 팬더 데이터 프레임 행 삭제) 에 대한 관련 질문을 찾았 지만이 예에서는이 조건이 충족되면 모든 행을 삭제하는 반면 첫 번째 행만 삭제하고 싶습니다.

이것이 가능합니까?

Ansev

사용 Series.shift:

df.loc[~(df['foo'].ne(df['foo'].shift()) & df['bar'].eq(0))]

또는

df.loc[df.duplicated(subset = 'foo') | df['bar'].ne(0)]

분명히 훨씬 낫다

%%timeit
df.loc[~(df['foo'].ne(df['foo'].shift()) & df['bar'].eq(0))]
#970 µs ± 51.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) each)

%%timeit
df.loc[df.duplicated(subset = 'foo') | df['bar'].ne(0)]
#1.34 ms ± 34 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit
df.loc[~df.index.isin(df.drop_duplicates(subset='foo').loc[lambda x: x.bar==0].index)]
#2.16 ms ± 109 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

foo귀하의 예와 같은 경우 :

%%timeit
df.loc[~(df['foo'].diff().ne(0)&df['bar'].eq(0))]
908 µs ± 15.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

또는

%%timeit
df.loc[df['foo'].duplicated().add(df['bar']).ne(0)]
787 µs ± 15.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

열에서 조건이 충족되면 팬더 n 행 삭제

분류에서Dev

Pandas 데이터 프레임에서 행 삭제 : 특정 조건이 충족 될 때마다 이전 k 개 행 삭제

분류에서Dev

Pandas 데이터 프레임의 조건에 따라 행 삭제

분류에서Dev

조건에 따라 Pandas 데이터 프레임에서 행 삭제

분류에서Dev

그룹 기반 조건을 사용하여 일부 Pandas 데이터 프레임 행 삭제

분류에서Dev

조건이 충족 될 때까지 데이터 프레임에서 행 제거

분류에서Dev

조건을 충족하는 조정 된 데이터 프레임에서 행을 삭제하면서 행의 열 병합

분류에서Dev

Pandas 데이터 프레임에서 특정 속성 값이있는 행의 일부를 삭제하는 방법

분류에서Dev

날짜 및 시간 조건에 따라 행 삭제 pandas 데이터 프레임

분류에서Dev

최소한 지정된 수의 열에서 조건이 충족되지 않는 경우 데이터 프레임에서 행을 삭제하는 방법

분류에서Dev

조건을 충족하는 데이터 프레임에서 행을 삭제하면서 행의 열을 병합하는 방법

분류에서Dev

Pandas 데이터 프레임에서 특정 행 삭제

분류에서Dev

Pandas 데이터 프레임에서 행 삭제

분류에서Dev

행 인덱스의 조건에 따라 Pandas 데이터 프레임에서 행을 삭제하는 방법

분류에서Dev

이전 행에 조건부 데이터 프레임에서 행 제거

분류에서Dev

Python Pandas : 데이터 프레임에서 여러 조건과 일치하지 않는 행 제거

분류에서Dev

조건이 충족되면 파일 삭제

분류에서Dev

Pandas Groupby First-원본 데이터 프레임에서 인덱스 추출

분류에서Dev

데이터 프레임의 일부 열에 대해서만 반복되는 행 삭제

분류에서Dev

열에서 조건이 충족되면 팬더 n 행을 삭제하고 다음 섹션으로 이동

분류에서Dev

마지막 행 값에서 조건부 pandas 데이터 프레임의 열을 제거하려면 어떻게해야합니까?

분류에서Dev

Pandas 데이터 프레임의 여러 조건 (2 열 기준)에서 행 삭제

분류에서Dev

pandas 데이터 프레임 행에 여러 조건 groupby + sort + sum 적용

분류에서Dev

복잡한 조건에서 Pandas 데이터 프레임의 행 제거

분류에서Dev

대칭 데이터 프레임에서 조건을 만족하는 행과 열을 모두 삭제

분류에서Dev

항목이 조건을 충족하지 않는 데이터 프레임의 행 삭제 / 편집

분류에서Dev

Pandas의 데이터 프레임에서 조건이 충족되는 이전 행을 어떻게 얻을 수 있습니까?

분류에서Dev

부동 소수점 범위를 기반으로 pandas 데이터 프레임에서 행 삭제

분류에서Dev

Pandas-기준이 충족되면 groupby

Related 관련 기사

  1. 1

    열에서 조건이 충족되면 팬더 n 행 삭제

  2. 2

    Pandas 데이터 프레임에서 행 삭제 : 특정 조건이 충족 될 때마다 이전 k 개 행 삭제

  3. 3

    Pandas 데이터 프레임의 조건에 따라 행 삭제

  4. 4

    조건에 따라 Pandas 데이터 프레임에서 행 삭제

  5. 5

    그룹 기반 조건을 사용하여 일부 Pandas 데이터 프레임 행 삭제

  6. 6

    조건이 충족 될 때까지 데이터 프레임에서 행 제거

  7. 7

    조건을 충족하는 조정 된 데이터 프레임에서 행을 삭제하면서 행의 열 병합

  8. 8

    Pandas 데이터 프레임에서 특정 속성 값이있는 행의 일부를 삭제하는 방법

  9. 9

    날짜 및 시간 조건에 따라 행 삭제 pandas 데이터 프레임

  10. 10

    최소한 지정된 수의 열에서 조건이 충족되지 않는 경우 데이터 프레임에서 행을 삭제하는 방법

  11. 11

    조건을 충족하는 데이터 프레임에서 행을 삭제하면서 행의 열을 병합하는 방법

  12. 12

    Pandas 데이터 프레임에서 특정 행 삭제

  13. 13

    Pandas 데이터 프레임에서 행 삭제

  14. 14

    행 인덱스의 조건에 따라 Pandas 데이터 프레임에서 행을 삭제하는 방법

  15. 15

    이전 행에 조건부 데이터 프레임에서 행 제거

  16. 16

    Python Pandas : 데이터 프레임에서 여러 조건과 일치하지 않는 행 제거

  17. 17

    조건이 충족되면 파일 삭제

  18. 18

    Pandas Groupby First-원본 데이터 프레임에서 인덱스 추출

  19. 19

    데이터 프레임의 일부 열에 대해서만 반복되는 행 삭제

  20. 20

    열에서 조건이 충족되면 팬더 n 행을 삭제하고 다음 섹션으로 이동

  21. 21

    마지막 행 값에서 조건부 pandas 데이터 프레임의 열을 제거하려면 어떻게해야합니까?

  22. 22

    Pandas 데이터 프레임의 여러 조건 (2 열 기준)에서 행 삭제

  23. 23

    pandas 데이터 프레임 행에 여러 조건 groupby + sort + sum 적용

  24. 24

    복잡한 조건에서 Pandas 데이터 프레임의 행 제거

  25. 25

    대칭 데이터 프레임에서 조건을 만족하는 행과 열을 모두 삭제

  26. 26

    항목이 조건을 충족하지 않는 데이터 프레임의 행 삭제 / 편집

  27. 27

    Pandas의 데이터 프레임에서 조건이 충족되는 이전 행을 어떻게 얻을 수 있습니까?

  28. 28

    부동 소수점 범위를 기반으로 pandas 데이터 프레임에서 행 삭제

  29. 29

    Pandas-기준이 충족되면 groupby

뜨겁다태그

보관