pandas 데이터프레임 if문
조회수 9852회
안녕하세요 value값을 돌면서 if문을 만드려고 합니다.
value가 25이상이거나 8이하면 score에 3,
9<=x<=11 이거나 21<=x<=24 이면 2,
나머지는 0을 할당하려고 코드를 짰습니다.
for x in df['value']:
if (x >=25) or (x<=8):
df['score']=3
elif (9<=x<=11) or (21<=x<=24):
df['score']=2
else:
df['score']=0
그런데 결과값을 보면
value score
29 0
27 0
26 0
27 0
25 0
... ... ... ... ...
15 0
22 0
17 0
20 0
14 0
다 0이되버리네요. 뭐가문제인지 알수있을까요 ? 아니면 if문 말고 더 쉬운방법이 있을까요 ?
1 답변
-
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> import pandas as pd >>> df = pd.DataFrame({ "value": [ 1,2,3,4,5,6,7,11,12,13,14,15,16,1 ] }) >>> df value 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 11 8 12 9 13 10 14 11 15 12 16 13 1 >>> def get_score(v): if v < 7: score = 0 elif v < 14: score = 1 elif v < 21: score = 2 else: score = 3 return score >>> df["socre"] = df["value"].apply(lambda v: get_score(v)) >>> df value socre 0 1 0 1 2 0 2 3 0 3 4 0 4 5 0 5 6 0 6 7 1 7 11 1 8 12 1 9 13 1 10 14 2 11 15 2 12 16 2 13 1 0 >>>
이런 식으로 하면 될 거고요. 질문하신 코드에서는
df["score"] = 0
이라고 하면,df["score"]
의 모든 값이 0이 되어버립니다.
댓글 입력