목록에 포함되지 않은 경우 pandas 열에서 요소 제거

도구 칸 일 마즈

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

certificates = [ISO9001, ISO203, CE2234]

다음과 같은 데이터 프레임 :

company_certificates
[ISO303, ISO9001]
[GlobalGAP12, ISO203]
[EuroGAP]

인증서 목록에 포함되지 않은 경우 company_certificates에서 요소를 제거하고 싶습니다. 다음과 같이 할 수 있습니다.

df['company_certificates'] = df['company_certificates'].apply(lambda x: [i for i in x if i in certificates])

최종 출력은 다음과 같습니다.

company_certificates
[ISO9001]
[ISO203]
[]

하지만 내 데이터 프레임이 거대하기 때문에 더 효율적인 방법이 필요합니다. 어떤 아이디어?

E. 제이 틴치
data = {'company_certificates': [['ISO303', 'ISO9001'], ['GlobalGAP12', 'ISO203'], ['EuroGAP']]}
data['company_certificates'] *= 1000000

df = pd.DataFrame(data)
certificates = ['ISO9001', 'ISO203', 'CE2234']

# 3.1 s ± 134 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
c2 = df['company_certificates'].tolist()
c1set = frozenset(certificates)
df['match'] = [[n for n in lst if n in c1set] for lst in c2]

# 4.32 s ± 578 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
df['match'] = df['company_certificates'].apply(lambda x: [i for i in x if i in certificates])

# 7.23 s ± 616 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
df['match'] = df['company_certificates'].apply(lambda x: list(set(x).intersection(certificates)))     

# 9.43 s ± 913 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
df['match'] = df['company_certificates'].apply(lambda x: list(filter(lambda y: y in x, certificates)))

# 32 s ± 2.11 s per loop (mean ± std. dev. of 7 runs, 1 loop each)
mask = ~df['company_certificates'].explode().isin(certificates).reset_index() \
               .groupby('index').any()['company_certificates']
df.loc[mask,'company_certificates'] = [[]*mask.sum()]

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Pandas의 날짜 열에 특정 날짜가 포함되지 않은 경우 그룹 제거

분류에서Dev

Pandas Dataframe에서 전체 목록 행 제거-목록에 요소가 포함 된 경우 (이 경우 카드 한두 개)

분류에서Dev

목록간에 공유되지 않은 경우 목록에서 항목 제거

분류에서Dev

그것은 특정 문자가 포함 된 경우 목록 또는 세트에서 요소를 제거

분류에서Dev

목록에 특정 텍스트가 포함 된 경우 목록에서 요소 제거

분류에서Dev

주어진 요소를 포함하는 경우 목록에서 하위 목록 제거

분류에서Dev

패턴을 포함하지 않는 목록에서 요소 제거

분류에서Dev

문자열 / 기호가 포함 된 경우 배열에서 요소 제거

분류에서Dev

배열에서 정의되지 않은 요소 제거

분류에서Dev

목록 행에 SwiftUI의 textField가 포함 된 경우 foreach에서 요소를 제거 할 수 없습니다.

분류에서Dev

Pandas 열의 목록에서 요소 제거

분류에서Dev

다른 목록에 포함되지 않은 한 목록에서 요소를 삭제하는 방법은 무엇입니까?

분류에서Dev

다른 벡터에 포함되지 않은 키를 사용하여 맵에서 요소 제거

분류에서Dev

"IN"을 포함하지 않는 문자열 배열에서 모든 요소 제거

분류에서Dev

Pandas : 목록에있는 하나의 요소를 col2에 포함하지 않는 모든 그룹을 제거합니다.

분류에서Dev

Python : 목록과 하위 목록에서 중복 요소를 제거합니다. 중복되는 경우 전체 하위 목록 제거

분류에서Dev

Pandas Python은 조건이있는 목록에서 요소를 제거합니다.

분류에서Dev

요소에 "*"가 포함되지 않은 경우 jQuery를 사용하여 레이블에 "*"를 추가합니다.

분류에서Dev

요소에 "*"가 포함되지 않은 경우 jQuery를 사용하여 레이블에 "*"를 추가합니다.

분류에서Dev

행에 팬더의 패턴이 포함되지 않은 경우 groupby로 groupb 제거

분류에서Dev

사전에서 목록 요소를 검색하고 존재하지 않는 경우 삭제

분류에서Dev

다른 [JAVA / ANDROID]에 포함되지 않은 요소 목록 반환

분류에서Dev

목록 B에있는 항목이 A == B 인 경우에도 빈 목록을 반환하지 않는 경우 목록 A에서 모든 항목 제거

분류에서Dev

다른 목록에있는 경우 목록의 요소를 제거

분류에서Dev

아직 사용되지 않은 foreach의 배열에서 요소 제거

분류에서Dev

아직 사용되지 않은 foreach의 배열에서 요소 제거

분류에서Dev

데이터가 열에 기록되지 않은 경우 Python으로 CSV에서 행 제거

분류에서Dev

Javascript 매초 목록에서 요소를 제거하고 싶지만 제거되지 않습니다.

분류에서Dev

다른 목록에 포함되지 않은 경우에도 전체 목록을 표시하는 MS Access SQL

Related 관련 기사

  1. 1

    Pandas의 날짜 열에 특정 날짜가 포함되지 않은 경우 그룹 제거

  2. 2

    Pandas Dataframe에서 전체 목록 행 제거-목록에 요소가 포함 된 경우 (이 경우 카드 한두 개)

  3. 3

    목록간에 공유되지 않은 경우 목록에서 항목 제거

  4. 4

    그것은 특정 문자가 포함 된 경우 목록 또는 세트에서 요소를 제거

  5. 5

    목록에 특정 텍스트가 포함 된 경우 목록에서 요소 제거

  6. 6

    주어진 요소를 포함하는 경우 목록에서 하위 목록 제거

  7. 7

    패턴을 포함하지 않는 목록에서 요소 제거

  8. 8

    문자열 / 기호가 포함 된 경우 배열에서 요소 제거

  9. 9

    배열에서 정의되지 않은 요소 제거

  10. 10

    목록 행에 SwiftUI의 textField가 포함 된 경우 foreach에서 요소를 제거 할 수 없습니다.

  11. 11

    Pandas 열의 목록에서 요소 제거

  12. 12

    다른 목록에 포함되지 않은 한 목록에서 요소를 삭제하는 방법은 무엇입니까?

  13. 13

    다른 벡터에 포함되지 않은 키를 사용하여 맵에서 요소 제거

  14. 14

    "IN"을 포함하지 않는 문자열 배열에서 모든 요소 제거

  15. 15

    Pandas : 목록에있는 하나의 요소를 col2에 포함하지 않는 모든 그룹을 제거합니다.

  16. 16

    Python : 목록과 하위 목록에서 중복 요소를 제거합니다. 중복되는 경우 전체 하위 목록 제거

  17. 17

    Pandas Python은 조건이있는 목록에서 요소를 제거합니다.

  18. 18

    요소에 "*"가 포함되지 않은 경우 jQuery를 사용하여 레이블에 "*"를 추가합니다.

  19. 19

    요소에 "*"가 포함되지 않은 경우 jQuery를 사용하여 레이블에 "*"를 추가합니다.

  20. 20

    행에 팬더의 패턴이 포함되지 않은 경우 groupby로 groupb 제거

  21. 21

    사전에서 목록 요소를 검색하고 존재하지 않는 경우 삭제

  22. 22

    다른 [JAVA / ANDROID]에 포함되지 않은 요소 목록 반환

  23. 23

    목록 B에있는 항목이 A == B 인 경우에도 빈 목록을 반환하지 않는 경우 목록 A에서 모든 항목 제거

  24. 24

    다른 목록에있는 경우 목록의 요소를 제거

  25. 25

    아직 사용되지 않은 foreach의 배열에서 요소 제거

  26. 26

    아직 사용되지 않은 foreach의 배열에서 요소 제거

  27. 27

    데이터가 열에 기록되지 않은 경우 Python으로 CSV에서 행 제거

  28. 28

    Javascript 매초 목록에서 요소를 제거하고 싶지만 제거되지 않습니다.

  29. 29

    다른 목록에 포함되지 않은 경우에도 전체 목록을 표시하는 MS Access SQL

뜨겁다태그

보관