inflearn logo
강의

講義

知識共有

たった2枚の文書でデータ分析と視覚化をマスターする

14) mergeでデータフレームを結合する:left, right, inner, outerオプションの使用方法

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

494

vampard0314

投稿した質問数 6

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

回答 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