[PYTHON] 가치에 기반한 팬더 조회
PYTHON가치에 기반한 팬더 조회
다음 DataFrame 있습니다 :
Date best a b c d
1990 a 5 4 7 2
1991 c 10 1 2 0
1992 d 2 1 4 12
1993 a 5 8 11 6
다음과 같이 데이터 프레임을 만들고 싶습니다.
Date best value
1990 a 5
1991 c 2
1992 d 12
1993 a 5
그래서 열 이름을 사용하여 다른 행 값을 기반으로 값을 찾으려고합니다. 예를 들어 두 번째 df에서 1990의 값은 첫 번째 df에서 "a"를 찾아야하고 두 번째 행은 첫 번째 df에서 "c"(= 2)를 조회해야합니다.
어떤 아이디어?
해결법
-
==============================
1.이 유형의 상황을 처리 할 수있는 조회 기능이 내장되어 있습니다 (행 / 열을 조회). 얼마나 최적화되었는지는 모르겠지만 적용 솔루션보다 빠를 수 있습니다.
이 유형의 상황을 처리 할 수있는 조회 기능이 내장되어 있습니다 (행 / 열을 조회). 얼마나 최적화되었는지는 모르겠지만 적용 솔루션보다 빠를 수 있습니다.
In [9]: df['value'] = df.lookup(df.index, df['best']) In [10]: df Out[10]: Date best a b c d value 0 1990 a 5 4 7 2 5 1 1991 c 10 1 2 0 2 2 1992 d 2 1 4 12 12 3 1993 a 5 8 11 6 5
-
==============================
2.당신은 lookup 함수를 생성하고 rowframe 방식으로 데이터 프레임에 apply를 호출합니다. 그러나 이것은 큰 dfs에서는 그리 효율적이지 않습니다.
당신은 lookup 함수를 생성하고 rowframe 방식으로 데이터 프레임에 apply를 호출합니다. 그러나 이것은 큰 dfs에서는 그리 효율적이지 않습니다.
In [245]: def lookup(x): return x[x.best] df['value'] = df.apply(lambda row: lookup(row), axis=1) df Out[245]: Date best a b c d value 0 1990 a 5 4 7 2 5 1 1991 c 10 1 2 0 2 2 1992 d 2 1 4 12 12 3 1993 a 5 8 11 6 5
from https://stackoverflow.com/questions/25935431/pandas-lookup-based-on-value by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 대소 문자 무시 문자열에서 부분 문자열을 일치시키는 방법은 무엇입니까? (0) | 2018.11.20 |
---|---|
[PYTHON] Python 정규식, 여러 줄에 걸쳐 패턴 일치. 왜이 코드가 작동하지 않습니까? (0) | 2018.11.20 |
[PYTHON] 어떻게 데이터 프레임 인덱스를 배열로 가져 옵니까? (0) | 2018.11.20 |
[PYTHON] __future__에서 사용하는 방법 import print_function [닫힘] (0) | 2018.11.20 |
[PYTHON] 파이썬 사전 : u '문자 제거하기 (0) | 2018.11.20 |