[PYTHON] Pandas는 여러 열에 외부 데이터 프레임을 여러 개 결합했습니다.
PYTHONPandas는 여러 열에 외부 데이터 프레임을 여러 개 결합했습니다.
필자는 DataFrame을 처음 사용하고 있으며 일련의 테이블에서 여러 개의 열에 대해 왼쪽 외부 조인을 수행하는 방법을 알고 싶습니다.
예:
df1:
Year Week Colour Val1
2014 A Red 50
2014 B Red 60
2014 B Black 70
2014 C Red 10
2014 D Green 20
df2:
Year Week Colour Val2
2014 A Black 30
2014 B Black 100
2014 C Green 50
2014 C Red 20
2014 D Red 40
df3:
Year Week Colour Val3
2013 B Red 60
2013 C Black 80
2013 B Black 10
2013 D Green 20
2013 D Red 50
본질적으로 나는이 SQL 코드와 같은 것을하고 싶다. (df3는 Year에 조인되지 않는다.)
SELECT df1.*, df2.Val2, df3.Val3
FROM df1
LEFT OUTER JOIN df2
ON df1.Year = df2.Year
AND df1.Week = df2.Week
AND df1.Colour = df2.Colour
LEFT OUTER JOIN df3
ON df1.Week = df3.Week
AND df1.Colour = df3.Colour
결과는 다음과 같아야합니다.
Year Week Colour Val1 Val2 Val3
2014 A Red 50 Null Null
2014 B Red 60 Null 60
2014 B Black 70 100 Null
2014 C Red 10 20 Null
2014 D Green 20 Null Null
내가 병합을 사용하여 시도하고 가입하지만 여러 테이블에 할 때 어떻게 여러 관절이 관련되어 있는지 알아낼 수 없습니다. 누군가 제발 도와 주실 수 있습니까?
감사
해결법
-
==============================
1.먼저 df1과 df2의 두 단계로 병합 한 다음 df3의 결과를 병합합니다.
먼저 df1과 df2의 두 단계로 병합 한 다음 df3의 결과를 병합합니다.
In [33]: s1 = pd.merge(df1, df2, how='left', on=['Year', 'Week', 'Colour'])
마지막 참여를 위해 필요하지 않으므로 df3에서 1 년을 내 렸습니다.
In [39]: df = pd.merge(s1, df3[['Week', 'Colour', 'Val3']], how='left', on=['Week', 'Colour']) In [40]: df Out[40]: Year Week Colour Val1 Val2 Val3 0 2014 A Red 50 NaN NaN 1 2014 B Red 60 NaN 60 2 2014 B Black 70 100 10 3 2014 C Red 10 20 NaN 4 2014 D Green 20 NaN 20 [5 rows x 6 columns]
-
==============================
2.@ TomAugspurger의 답을 간략하게 적어도 다음과 같이 할 수 있습니다 :
@ TomAugspurger의 답을 간략하게 적어도 다음과 같이 할 수 있습니다 :
df = df1.merge(df2, how='left', on=['Year', 'Week', 'Colour']).merge(df3[['Week', 'Colour', 'Val3']], how='left', on=['Week', 'Colour'])
from https://stackoverflow.com/questions/21786490/pandas-left-outer-join-multiple-dataframes-on-multiple-columns by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬의 os.makedirs가 내 경로의 "~"을 이해하지 못합니다. (0) | 2018.10.12 |
---|---|
[PYTHON] 공통 요소를 공유하는 목록 병합 (0) | 2018.10.11 |
[PYTHON] 파이썬에서 sscanf (0) | 2018.10.11 |
[PYTHON] 이상한 Try-Except-Else-Finally 동작 (Return 문 사용) [duplicate] (0) | 2018.10.11 |
[PYTHON] 프로그램 종료 전에 무엇인가하기 (0) | 2018.10.11 |