Pandas는 열 이름을 변경하지 않고 조건으로 병합 및 업데이트합니다.

davidjhp

판다 1.0.5

위도 및 경도로 향상시키고 싶은 트랜잭션 파일이 있습니다.

트랜잭션 파일에 우편 번호가있는 경우 해당 우편 번호를 사용하여 위도와 경도를 조회하고 파일에 추가하고 싶습니다.

거래 파일에 도시 / 주가 있고 우편 번호가없는 경우 해당 도시 / 주를 사용하여 위도와 경도를 조회하고 파일에서 업데이트 하고 싶습니다 . 우편 번호가없는 경우에만.

코드의 문제는 열 이름에 "_x"를 추가하는 것입니다. 두 번째 문제는 도시 조회가 우편 번호 조회를 덮어 쓰는 것입니다.

import pandas as pd
import numpy as np

#The transaction file
data = [
        ['MCDONALDS RESTAURANT STORE 100', '94521', '', ''],
        ['MCDONALDS RESTAURANT STORE 200', '94521', 'CLAYTON', 'CA'],  #zipcode is present so do not lookup with city
        ['BURGER KING RESTAURANT STORE 100', '', 'CONCORD', 'CA'],
        ['BURGER KING RESTAURANT STORE 200', '', 'CONCORD', 'CA'],
        ['TACO BELL RESTAURANT STORE 100', '', '', ''],
        ]
t = pd.DataFrame(data, columns = ['merchant', 'zipcode', 'city', 'state'])

#Step 1. Use zipcodes to lookup latitudes
data = [
        ['94521', '37.9780', '-121.0311'],
        ['94522', '40.1234', '-200.1234'],
        ]
z = pd.DataFrame(data, columns = ['zipcode', 'latitude', 'longitude'])

t = pd.merge(t, z[['zipcode', 'latitude', 'longitude']], how='left', on='zipcode') #works perfectly

#Step 2. Use city/states to lookup latitudes, if there was no zipcode
data = [
        ['CA', 'CONCORD', '37.9780', '-121.0311'],
        ['CA', 'CLAYTON', '40.1234', '-200.1234'],
        ]
c = pd.DataFrame(data, columns = ['state', 'city', 'latitude', 'longitude'])

t = pd.merge(t, c[['state', 'city', 'latitude', 'longitude']], how='left', on=['state', 'city']) #this line is the problem
Stef

그다지 우아하지는 않지만 나머지 (lon / lat is NA) 행에서만 두 번째 병합을 수행 한 다음 두 부분을 연결할 수 있습니다.

m = t.latitude.notna()
t = pd.concat([t.loc[m],
               pd.merge(t.loc[~m, ['merchant', 'zipcode', 'city', 'state']], c[['state', 'city', 'latitude', 'longitude']], how='left', on=['state', 'city'])])

결과:

                           merchant zipcode     city state latitude  longitude
0    MCDONALDS RESTAURANT STORE 100   94521                  37.978  -121.0311
1    MCDONALDS RESTAURANT STORE 200   94521  CLAYTON    CA   37.978  -121.0311
0  BURGER KING RESTAURANT STORE 100          CONCORD    CA   37.978  -121.0311
1  BURGER KING RESTAURANT STORE 200          CONCORD    CA   37.978  -121.0311
2    TACO BELL RESTAURANT STORE 100                             NaN        NaN

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

변수 이름을 지정하지 않고 대문자 및 비대 문자 버전의 변수 이름이있는 열 병합

분류에서Dev

첫 번째 열을 기준으로 파일을 병합하고 열 이름이 일치하지 않는 곳에 0을 추가합니다.

분류에서Dev

조건으로 배열을 필터링하고 키 이름을 변경합니다.

분류에서Dev

on / and 조건으로 PL / SQL 조인으로 업데이트-모든 행을 업데이트하려고합니다.

분류에서Dev

순서를 변경하지 않고 동일한 행 이름 (및 열 이름)을 가진 여러 데이터 프레임을 병합하는 방법은 무엇입니까?

분류에서Dev

Oracle 병합 SQL은 조건으로 업데이트 할 때 작동하지 않습니다.

분류에서Dev

배열 내부의 연속 객체를 조건과 병합하고 병합 된 요소를 업데이트합니다.

분류에서Dev

파일을 열지 않고 Excel 파일 (데이터 새로 고침 및 수식 업데이트)을 어떻게 업데이트합니까?

분류에서Dev

NaT가 datetime으로 변경되는지 확인하고 값을 업데이트합니다.

분류에서Dev

고유 한 열 이름 또는 특정 조건으로 DataFrames 병합 또는 매핑

분류에서Dev

파일 이름을 열 이름으로 유지하는 여러 파일 병합

분류에서Dev

데이터 프레임에 열 이름이 있는지 확인하고 기본값으로 열을 만들지 않는 경우 어떻게합니까?

분류에서Dev

고유 한 행 값을 기반으로 열 데이터를 검색 및 업데이트하고 새 값인 경우 마지막 행 VBA로 업데이트합니다.

분류에서Dev

Pandas : 열 값은 같지만 행과 조건이 다른 특정 열 값을 업데이트합니다.

분류에서Dev

이름, 중간 이름 및 성으로 문자 배열을 분할하고, C 언어에서 비어있는 경우 중간 이름을 건너 뜁니다.

분류에서Dev

열 이름으로 열 이름을 바꾸고 다른 시트와 병합

분류에서Dev

Pandas는 행이 겹치지 않고 DataFrame을 병합합니다.

분류에서Dev

findOneAndUpdate는 사용자가 업데이트되지 않은 경우 null을 반환합니다 (조건으로 인해).

분류에서Dev

하위 배열을 병합하고 필드 이름을 값으로 유지

분류에서Dev

Python Pandas는 두 데이터 세트의 두 열을 열 이름과 데이터 유형을 유지하면서 하나로 변환합니다.

분류에서Dev

동일한 데이터 프레임에있는 다른 열의 조건을 기반으로 R 데이터 프레임의 열에서 이름 조합 8 개를 생성하고 싶습니다.

분류에서Dev

Javascript는 이메일 하위 문자열을 전체 이름, 이름 및 성으로 배열합니다.

분류에서Dev

다른 열의 조건 및 값을 기반으로 출력을 생성하는 데이터 프레임을 반복합니다.

분류에서Dev

Pandas에서 다른 열을 선택하여 조건에 따라 열 값을 업데이트합니다.

분류에서Dev

Pandas Dataframe을 반복하고 열 이름 및 유형을 반환합니다.

분류에서Dev

Luis Skill Recognizer 열거 오류-.luis 및 .qna 파일을 변경 사항으로 업데이트해야합니다.

분류에서Dev

Pandas는 다중 레벨 인덱스 데이터 프레임을 연결하고 동일한 레벨 내의 동일한 이름 열을 병합합니다.

분류에서Dev

Pandas는 다른 열의 값에서 열을 업데이트하지만 업데이트하기 전에 값을 조작합니다.

분류에서Dev

열을 추가 및 삭제하지 않고 두 테이블을 병합하는 방법

Related 관련 기사

  1. 1

    변수 이름을 지정하지 않고 대문자 및 비대 문자 버전의 변수 이름이있는 열 병합

  2. 2

    첫 번째 열을 기준으로 파일을 병합하고 열 이름이 일치하지 않는 곳에 0을 추가합니다.

  3. 3

    조건으로 배열을 필터링하고 키 이름을 변경합니다.

  4. 4

    on / and 조건으로 PL / SQL 조인으로 업데이트-모든 행을 업데이트하려고합니다.

  5. 5

    순서를 변경하지 않고 동일한 행 이름 (및 열 이름)을 가진 여러 데이터 프레임을 병합하는 방법은 무엇입니까?

  6. 6

    Oracle 병합 SQL은 조건으로 업데이트 할 때 작동하지 않습니다.

  7. 7

    배열 내부의 연속 객체를 조건과 병합하고 병합 된 요소를 업데이트합니다.

  8. 8

    파일을 열지 않고 Excel 파일 (데이터 새로 고침 및 수식 업데이트)을 어떻게 업데이트합니까?

  9. 9

    NaT가 datetime으로 변경되는지 확인하고 값을 업데이트합니다.

  10. 10

    고유 한 열 이름 또는 특정 조건으로 DataFrames 병합 또는 매핑

  11. 11

    파일 이름을 열 이름으로 유지하는 여러 파일 병합

  12. 12

    데이터 프레임에 열 이름이 있는지 확인하고 기본값으로 열을 만들지 않는 경우 어떻게합니까?

  13. 13

    고유 한 행 값을 기반으로 열 데이터를 검색 및 업데이트하고 새 값인 경우 마지막 행 VBA로 업데이트합니다.

  14. 14

    Pandas : 열 값은 같지만 행과 조건이 다른 특정 열 값을 업데이트합니다.

  15. 15

    이름, 중간 이름 및 성으로 문자 배열을 분할하고, C 언어에서 비어있는 경우 중간 이름을 건너 뜁니다.

  16. 16

    열 이름으로 열 이름을 바꾸고 다른 시트와 병합

  17. 17

    Pandas는 행이 겹치지 않고 DataFrame을 병합합니다.

  18. 18

    findOneAndUpdate는 사용자가 업데이트되지 않은 경우 null을 반환합니다 (조건으로 인해).

  19. 19

    하위 배열을 병합하고 필드 이름을 값으로 유지

  20. 20

    Python Pandas는 두 데이터 세트의 두 열을 열 이름과 데이터 유형을 유지하면서 하나로 변환합니다.

  21. 21

    동일한 데이터 프레임에있는 다른 열의 조건을 기반으로 R 데이터 프레임의 열에서 이름 조합 8 개를 생성하고 싶습니다.

  22. 22

    Javascript는 이메일 하위 문자열을 전체 이름, 이름 및 성으로 배열합니다.

  23. 23

    다른 열의 조건 및 값을 기반으로 출력을 생성하는 데이터 프레임을 반복합니다.

  24. 24

    Pandas에서 다른 열을 선택하여 조건에 따라 열 값을 업데이트합니다.

  25. 25

    Pandas Dataframe을 반복하고 열 이름 및 유형을 반환합니다.

  26. 26

    Luis Skill Recognizer 열거 오류-.luis 및 .qna 파일을 변경 사항으로 업데이트해야합니다.

  27. 27

    Pandas는 다중 레벨 인덱스 데이터 프레임을 연결하고 동일한 레벨 내의 동일한 이름 열을 병합합니다.

  28. 28

    Pandas는 다른 열의 값에서 열을 업데이트하지만 업데이트하기 전에 값을 조작합니다.

  29. 29

    열을 추가 및 삭제하지 않고 두 테이블을 병합하는 방법

뜨겁다태그

보관