해결된 질문
작성
·
308
1
# your code
#데이터 변환은 replace!!
import pandas as pd
df = pd.read_csv('members.csv')
df = df.dropna(subset=['views'])
df['f3'] = df['f3'].fillna(0)
df = df.replace('silver',1).replace('gold',2).replace('vip',3)
df.head(10)
위 처럼 numpy를 불러오지 않고, f3컬럼에 결측값을 0으로 먼저 채운 후 변환문을 사용했는데 결과와 데이터프레임이 같아서
혹시 이 방법으로 해도 상관 없는건지 여쭤보려고 합니다~
다시 확인좀 하려고 지웠다가 다시 문의합니다!
그리고 map사용 시
#map
import pandas as pd
df = pd.read_csv("members.csv")
df = df.dropna(subset=['views'])
dict_list = {np.nan:0, 'silver':1, 'gold':2, 'vip':3}
df['f3'] = df['f3'].map(dict_list)
print(df['f3'].sum())
numpy를 불러야하는것이 맞겠죠?..
위에서 이미 한번 numpy 불러와서 에러가 발생하지 않은 것 같아서요.
답변 1
1
1. 네, 넘파이를 불러오지 않고, f3컬럼에 결측값을 0으로 먼저 채운 후 변환문을 사용해도 됩니다.
2. 잘 이해하고 계시네요! np가 들어가면 import numpy as np가 필요한데 이미 한번 불러와서 에러가 발생하지 않는 것 맞습니다.
추가로 loc를 활용해 아래처럼 푸는 방법도 있습니다 :)
cond1 = df['f3'] == 'silver'
cond2 = df['f3'] == 'gold'
cond3 = df['f3'] == 'vip'
df.loc[cond1, 'f3'] = 1
df.loc[cond2, 'f3'] = 2
df.loc[cond3, 'f3'] = 3
언제나 빠른 답변 감사드립니다.
추가 내용도 잘 숙지하겠습니다.
감사합니다~