inflearn logo
강의

Course

Instructor

Mastering data analysis and visualization with just two pages of documentation

14) Merging dataframes with merge using left, right, inner, and outer options

merge와 그룹바이 관련 질문이 있습니다.

494

vampard0314

6 asked

1

1. merge 할 때 혹시 이런 조건도 가능한가요? 

sql중에 join하면

select * from x as T1

left join y as T2 on T1.columns1 = T2.columns1

and T1.columns2 <> T2.columns2

이와 같이 두 테이블의 칼럼이 같지 않은 조건을 포함할 수는 없나요? merge를 보면 on 절에 = 조건만 들어가는 것 같아서 문의드립니다. 

 

2. 판다스의 groupby는 널값이 있는 행을 제외하고 그룹바이하는 걸로 아는데 어쩔 수 없이 데이터 자체에 널값이 포함되어 있는 경우 행마다 널값에 대한 사전전처리를 하지 않고 널값을 포함한 채로 그룹바이할 수는 없는건가요? 

sql은 널값을 포함한 채로 그룹바이가 가능한걸로 알고 있어서 문의드립니다.

python pandas

Answer 3

0

vampard0314

예를 들어 설명을 드리면

 

DF1  

    A B C    T

0   1   2   33   4

 

 

DF2

A  B   D

0 1  2   33

1 1  2   55

2 1  2   66

 

 

DF1을 기준으로 DF2를 붙이는 left merge를 해야 하는데,

칼럼 C의 값과 같지 않은 칼럼 D만 붙이고 싶습니다. 

 

원하는 결과 

 

    A B C     T    D

0   1   2    33    4    55

1   1   2    33    4    66

 

 

sql은 아래처럼 가능한것으로 알고 있는데

 

select * from T1 left join T2 on T1.A = T2.A  on T1.A = T2.A  on T1.A <> T2.A

 

파이썬은 혹시 가능한지 문의드립니다. 

0

todaycode

안녕하세요.

아쉽게도 판다스는 on 을 통해서 key 값을 지정하는 형태라 값이 같은 key  에 대해서만 join, merge 가 가능합니다.

[pandas.DataFrame.join — pandas 1.4.2 documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.join.html)

[pandas.DataFrame.merge — pandas 1.4.2 documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html)

 

 

0

vampard0314

감사합니다. 강사님,

left_on, right_on은 동등조건일로 알고 있는데요 예를 들면 left_on = T1.columA, right_on=T2.columB와 같이 칼럼이름이 다른경우 라도 칼럼 내용이 같으면 이에 따라 left, right, inner, outer 조인인 것으로 알고 있습니다. sql처럼 columnA와 columnB의 내용이 같이 않을 때 조인도 가능할까요? 

 

 

dropna=False는 멀티인덱싱일 경우 동작을 안하네요.

제가 이 케이스라.. 전처리를 다 하는 수 밖에 없겠네요...

Note that as of this writing, there is a bug that makes dropna=False fail with MultiIndex grouping.

https://stackoverflow.com/questions/18429491/pandas-groupby-columns-with-nan-missing-values

 

0

todaycode

안녕하세요.

join 을 할 때는 컬럼 이름에 상관없이 key 가 되는 값이 있어야 연결을 할 수 있습니다. 내용이 다른데 조인이 가능하다는게 어떤 의미인지 다시 질문해 주시겠어요? 기준이 되는 값이 있어야 연결을 해줄 수 있습니다.

0

todaycode

안녕하세요.

 

1)  left_on, right_on 등으로 사용해 볼 수 있습니다.

DataFrame.merge(righthow='inner'on=Noneleft_on=Noneright_on=Noneleft_index=Falseright_index=Falsesort=Falsesuffixes=('_x', '_y')copy=Trueindicator=Falsevalidate=None)

문서 링크 입니다 : [pandas.DataFrame.merge — pandas 1.4.2 documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html)

2) dropna=False 로 사용해 보세요!

문서 링크 입니다 :  [pandas.DataFrame.groupby — pandas 1.4.2 documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html)

 

날짜변환 에러

0

259

0

업로드자료 오류

1

373

1

20강 관련 문의드립니다.

1

299

1

17강 도입부 실습사이트 문의

2

298

1

4강 코드 오류메세지 관련 질의

1

374

2

쉬운 도서 추천 좀 부탁드립니다.

2

393

2

1강2강에 있는 csv파일을 다운받으면 한글이 깨져서 나와요

1

252

1

주피터노트북 목록(contents) 만들기

1

633

1

df.loc[df["거주지"].isin(gu), "지역"] = df["거주지"] 질문있습니다

1

207

1

월 주 함꼐 value_counts()

1

226

1

day_count.iloc[i]와 day_count[i]의 차이 질문

1

351

1

df 인덱싱 질문입니다

1

184

1

그래프에 한글제목을 나타내고 싶습니다.

1

535

1

배운 것 기반으로 만들어보고 있는데 질문이 있습니다.

1

404

5

질문이요

1

301

1

set_index()

1

287

1

timeit 관련 질문

1

363

1

그래프 밑에 제목을 넣으려면 어떡해야하나요???

1

421

2

한글폰트 설치 후 나오지 않는 현상 문의

1

1173

3

CSV 파일 불러오기

1

573

1

크롤링으로 csv파일 가져오기

2

320

1

영상에서 소개해주시는 웹사이트

2

260

1

질문

1

229

2

15강 질문

1

225

1