2017-03-07 1 views
2

환경은 복수 방법 팬더 데이터 프레임 결합의 테이블 B에서 테이블 A의 열을 테이블 B의 B 열로?

Python version 2.7.11 
Pandas version 0.18.1 

우리는 다음과 같은 입력 테이블을 가정 인 & B :

ID,FROM_YEAR,TYPE,AREA1,AREA2 
1,2015,A,100,200 
1,2015,B,100,200 

B

ID,FROM_YEAR,TYPE,COEFFICIENT 
1,2015,A,100,1.5 
1,2015,B,100,2.0 

이상적인 출력 :

SELECT 
a.ID, 
a.FROM_YEAR, 
a.TYPE, 
a.AREA1, 
a.AREA2*b.COEFFICIENT AS AREA2 
FROM a 
INNER JOIN b 
ON 
a.ID=b.ID, 
a.FROM_YEAR=b.FROM_YEAR, 
a.TYPE=b.TYPE 

는 파이썬 팬더에서이 작업을 수행하는 것이 가능 : 200 * 1.5 = 300 & 200 * 2.0 = 400

MySQL의 쿼리는 3,691,363,210

ID,FROM_YEAR,TYPE,AREA1,AREA2 
1,2015,A,100,**300** 
1,2015,B,100,**400** 

? 감사!

답변

1

당신은 eval() 방법을 사용할 수 있습니다 :

In [11]: pd.merge(A, B, on=['ID','FROM_YEAR','TYPE']) \ 
      .eval('AREA2 = AREA2 * COEFFICIENT', inplace=False) 
Out[11]: 
    ID FROM_YEAR TYPE AREA1_x AREA2 AREA1_y COEFFICIENT 
0 1  2015 A  100 300.0  100   1.5 
1 1  2015 B  100 400.0  100   2.0 
+0

이 답변 주셔서 감사합니다! 여기 평가 기능에 대해 조금 설명해 주시겠습니까? – Chubaka

+0

@Chubaka, Pandas docs에 대한 링크를 추가했습니다. 많은 예제를 찾을 수 있습니다. 더 잘 설명 할 수있을 것 같지 않습니다.) – MaxU

관련 문제