• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

강의 1:55초 코드가 이해가 안갑니다.

22.05.12 16:04 작성 조회수 132

1

강의 1:55초입니다.
def country_name_convert(row): if row['Country_Region'] in json_data: return json_data[row['Country_Region']] return row['Country_Region']
이 코드가 이해가 가질 않는데요
여기서 if문 내에 json_data이 value를 리턴해주는 이유가 무엇인지 궁금합니다.
아래는 제가 작성한 코드입니다.
def modify_cn(row):
    if row['Country_Region'] in json_data:
        row['Country_Region'] = json_data[row['Country_Region']]
  return row
 
함수 안에 return을 두 번 사용 하는 것은 처음 보는데 저 함수만 강의 코드로 바꿔주면 정상 작동하네요ㅠㅠ
 

답변 1

답변을 작성해보세요.

1

안녕하세요.

다음 함수는 

def country_name_convert(row):

    if row['Country_Region'] in json_data:

        return json_data[row['Country_Region']]

    return row['Country_Region']

 

다음 실제 적용 구문과 연결해서 보시면 좋을 것 같아요.

    doc['Country_Region'] = doc.apply(country_name_convert, axis=1)   # 4. 'Country_Region'의 국가명을 여러 파일에 일관되게 변경하기

 

apply() 의 결과가 doc['Country_Region']  이기 때문에, apply() 내의 함수인 country_name_convert 의 리턴값은 해당 컬럼값이어야 해요.

그래서, return 할 때, row 라는 특정 행 전체를 리턴하는 것이 아니라, row['Country_Region'] 라는 특정 컬럼값을 리턴한 것입니다.

 

json_data 는 사전 데이터로, 어떤 국가이름(A)을 어떤 국가명(B)으로 변환할지가 들어 있고,

{'Mainland China': 'China',

 'Macau': 'China',

 

row['Country_Region'] 는 A 에 해당하는 값이 들어 잇기 때문에,

json_data[row['Country_Region']] 은 A 에 해당하는 어떤 국가명(B) 값이 되고, 

이를 특정 컬럼값으로 리턴하게 해놓았습니다.

 

또 리턴이 두개 있다하더라도, if 문 조건에 맞게 들어가면, 리턴을 하면서, 이후 두번째 리턴 구문은 실행되지 않고, 만약 if 문 조건이 맞지 않으면, 두번째 리턴 구문만 실행된다고 보시면 좋을 것 같습니다.

    if row['Country_Region'] in json_data:

        return json_data[row['Country_Region']]

    return row['Country_Region']

 

각 구문에 print 구문등을 넣어서, 어떻게 변수값이 바뀌는지를 출력해보셔도 상당히 이해에 도움이 되고요. 또, 조금 이해가 어려운 구문이 있으면, 강의 영상을 여러번 반복해보시면서, 계속 고민해보시면, 점점 관련 사고가 생기면서, 이해가 되실 수 있습니다. 제가 경험한 팁이라서, 이 부분도 제안을 드려봅니다.

감사합니다.