hyezdata 님의 블로그

실습으로 익히는 python 4회차 본문

내일배움캠프/파이썬

실습으로 익히는 python 4회차

hyezdata 2025. 3. 17. 14:13
복습

 

merge

merge

 

만약 내가 inner join을 잘 했는지 확인하고 싶을 때

inner join을 했으니까 df3인 '3294'보다 개수가 작거나 같아야 한다.

그래서 merge_df를 실행해서 맨 밑에 있는 행과 열 개수를 확인해주면 된다!

3294보다 작은 2999이므로 오케이!

merge 확인

 

지금 여기서 merge는 함수가 아닌 메서드 형태!

 

join

join이 가지고 있는 특징 중 하나, 인덱스를 기준으로  join을 한다고 했는데

 

join과 merge 둘 다 똑같이 수평결합이지만,

위에 merge는 똑같은 컬럼, 공통 컬럼을 가지고 조인을 한거고, join은 번호(인덱스)끼리 결합한 것 (그래서 잘 사용 안 함)

강제로 붙인다고 생각

 

split

split 코드

코드를 쪼개서 설명해보면

df2["명수{}".format(i)]

 

df2에 명수0, 명수1, · · · , 명수6 이라는 컬럼을 붙여줘서 값을 받을 거임

 

df2['x'].apply(lambda x:

 

df2 에 있는 'x'라는 컬럼에 람다를 적용할 거임

 

x.split('.')[i]

 

함수는 'x' 라는 컬럼을 '.'으로 나누고 [i]로 나눈 거

 

if len(x.split('.'))>i else None)

 

만약 x.split('.') 길이가 i보다 클 때

 

즉,

df2["명수{}".format(i)] = df2['x'].apply(lambda x: x.split('.')[i] if len(x.split('.'))>i else None)

 

df2 에 있는 'x'라는 컬럼에 함수를 적용할건데 len(x.split('.'))>i 이 조건에 만족하면 x.split('.')[i] 라는 결과 값을 df2["명수{}".format(i)]에 넣어라

(안 만족하면 None)

 

이걸 inline if 라고 하는데

# inline if
결과값(조건 만족할 때) if 조건 조건안만족할때

 

df2 결과

 

rrule

데이터 타입이 문자열로 된 날짜 컬럼이 있다.

근데 날짜 형식을 다르게 바꾸고 싶음

날짜 형식이 문자열
코드1

 

df3['Time stamp2'] =

 

df3['Time stamp2']라는 새로운 컬럼에

 

pd.to_datetime(

 

pandas에 있는 문자열을 date형식으로 바꿔주는 함수 사용

 

df3['Time stamp'], dayfirst=True

 

df3['Time stamp'] 을 바꿔줄건데 자동으로 dayfirst로 바꿔 줘

 

.dt.strftime('%Y-%m-%d')

 

그리고 다시 날짜로 바꿔 줘 근데 날짜 형식을 내 맘대로

 

df3 결과를 보면 

df3 결과

 

내가 원하는 날짜를 데이터 프레임에 적용한 다음 슬라이싱해서 보고싶은 자료만 보려면

마스크 메서드 사용

마스크 메서드

 

'a'에 들어있으면 조건을 마스크로 선언

 

'a'는 이거임

a 리스트

 

그래서 df3[mask] 결과는 

df3 mask 결과

 

728x90
반응형