안녕하세요 저는 다음과 같은 두 개의 df가 있습니다.
df1
COL1 COL2
A 1
A 2
B 3
B 4
C 5
D 6
E 7
F 8
df2
Old New
A A.1
C C.1
E E.1
그리고 나는 교체하고 싶습니다
COL1
일치하는 값
df2.Ol
d에 의해
df2.New
값.
그리고 얻다 : df1
COL1 COL2
A.1 1
A.1 2
B 3
B 4
C.1 5
D 6
E.1 7
F 8
누군가 제발 아이디어가 있습니까?
-
답변 # 1
-
답변 # 2
사용하다
df.to_dict
와Series.map
:In [516]: x = df2.set_index('Old').to_dict()['New'] In [519]: df1['COL1'] = df1['COL1'].map(x).fillna(df1['COL1']) In [521]: df1 Out[521]: COL1 COL2 0 A.1 1 1 A.1 2 2 B 3 3 B 4 4 C.1 5 5 D 6 6 E.1 7 7 F 8
시간 비교:
@adir bargirl의 답변 :
In [540]: def f1(): ...: df1['COL1'] = df1.merge(df2.rename(columns={'Old':'COL1'}),on='COL1',how='left')['New'].fillna(df1['COL1']) ...: In [542]: %timeit f1() 2.09 ms ± 74.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
내 대답 :
In [541]: def f2(): ...: x = df2.set_index('Old').to_dict()['New'] ...: df1['COL1'] = df1['COL1'].map(x).fillna(df1['COL1']) ...: In [543]: %timeit f2() 1.06 ms ± 14.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
관련 자료
- r - 한 열의 값을 다른 열에서 변경하는 for 루프를 어떻게 수정합니까?
- r - 한 데이터 프레임의 값을 다른 데이터 프레임으로 일치시키고 바꾸는 방법은 무엇입니까?
- CSS의 값에 따라 요소의 색상 변경
- javascript - x-for 변수의 값을 테스트하고 값에 따라 CSS 스타일을 변경하는 방법은 무엇입니까?
- jq로 모든 키의 값 변경
- javascript - 로컬 저장소의 값에 따라 언어 선택기를 작동시키는 방법은 무엇입니까?
- dart - Flutter, 다른 클래스에서 수정 후 값 보내기 및 가져 오기
- flutter - 값에 따라 달라지는 선형 진행률 표시 줄
- c# - Picturebox의 이미지를 다른 형식에서 변경하는 방법은 무엇입니까?
- java - 다른 값으로 Enum 값 얻기
- python - 다른 데이터 프레임에 문자열 값이 없는지 확인하는 방법은 무엇입니까?
- PHP 한 배열에서 다른 배열의 값으로 존재하는 키를 찾고 값을 다시 가져옵니다
- python - 열에 다른 열에 특정 값이있는 경우 계산
- ruby on rails - '요청한 형식과 일치하십시오'를 변경하십시오 다른 것에?
- oop - JAVA에서 이것을 사용하여 ENUM 클래스 함수 내에서 ENUM의 값을 변경하십시오
- python - DataFrame 열 값을 다른 DataFrame 열과 일치시키고 조회수를 계산합니다
- java - 한 활동의 값을 다른 활동에서 전달하지 못했습니다 (널 값만 전달됨)
- vue.js - 쿠키 값 변경시 Vue 다시 렌더링
- microsoft excel - 둘 이상의 최소값이있는 세트의 중간 최소값 일치
산출: