인프런 커뮤니티 질문&답변

parkhyungbin님의 프로필 이미지
parkhyungbin

작성한 질문수

파이썬 판다스(pandas)로 데이터 분석 및 가공하기

조건에 따른 데이터프레임 수정 방법이 가능한지, 어떤 방식으로 가능한지 궁금해요.

작성

·

263

0

from pandas import DataFrame as df
과자목록1 = ['초코-파이','몽-쉘','빼빼로','호두파이','별-사탕']
과자목록2 = ['초코-파이','몽-쉘','바나나킥','땅콩파이','못난감자','초코칩쿠키','엄마손파이']
가격1 = ['500', '1000', '700', '800', '600']
가격2 = ['550', '1500', '750', '800', '600','500','400']

df1 = df(data={'과자': 과자목록1, '비고' : 0})
print(df1)

df2 = df(data={'과자': 과자목록2,'가격':가격2})
print(df2)

---------------------------

 

위와 같이 코드를 입력하였을시 사진과 같이 출력이 됩니다.

이 경우에 기능 구현이 가능한지에 대해 질문 드리고자 합니다.

1. 중간중간 섞여있는 -를 제거하는 방법이 있나요? 혹은 -를 .으로 바꿀수 있나요?

        - 파이썬 공부할때 몇번째 순서에 있는 값을 변경하는 인덱싱/슬라이싱은 본적이 있으나

          아예 무조건적으로 원하는 문자열을 전체 다 바꾸거나 지우는 기능이 있는지 궁금합니다.

2. 이 중에서 df1과 df2에 공통적으로 '초코-파이' 와 '몽-쉘' 이라는 값이 있습니다.

     만일 df1과 df2에 동일한 과자가 있을 때, df2의 가격이 df1의 비고에 들어갈 수 있게 할 수 있나요??

     (엑셀의 vlookup 기능(+ sumif기능도) 이 판다스에서도 가능한지 궁금합니다.)

강의를 수강하며 엑셀파일에 원하는 값을 추출하여 기본적인 전처리는 할 수 있게 되었는데

좀 더 제가 원하는 값만 추출하고 가공하는 기능에서 많이 막혀 질문드립니다.

답변 부탁드립니다. 감사합니다.

답변 1

0

Kyeongrok Kim님의 프로필 이미지
Kyeongrok Kim
지식공유자

1.
- 빼는건 아래와 같이 해보세요.

과자목록1 = [
'초코-파이','몽-쉘','빼빼로','호두파이','별-사탕']

replaced = [cracker.replace(
'-', '') for cracker in 과자목록1]
print(replaced)

결과
['초코파이', '몽쉘', '빼빼로', '호두파이', '별사탕']

일단은 .replace()를 쓰시면 됩니다.

2.
import pandas as pd
from pandas import DataFrame as df
과자목록1 = ['초코-파이','몽-쉘','빼빼로','호두파이','별-사탕']
과자목록2 = ['초코-파이','몽-쉘','바나나킥','땅콩파이','못난감자','초코칩쿠키','엄마손파이']
가격1 = ['500', '1000', '700', '800', '600']
가격2 = ['550', '1500', '750', '800', '600','500','400']

df1 = df(data={'과자': 과자목록1, '비고' : 0})
print(df1)

df2 = df(data={'과자': 과자목록2,'가격':가격2})
print(df2)

df_merged = pd.merge(df1, df2, how='right', on='과자')
print(df_merged)


일단 이렇게 해보세요. 강의에서 배운 merge()라는 기능을 활용하면 되는데 강의에서 추가된 점은
how='right'라는게 추가 된것입니다.
db에 join이라는 개념을 이해 하시면 좋을 것 같습니다.

https://krksap.tistory.com/480
위 포스트를 참고 하시구요

위의 경우는 right join이라서 how='right'가 들어갔습니다. 기본은 inner join입니다.

parkhyungbin님의 프로필 이미지
parkhyungbin

작성한 질문수

질문하기