데이터 프레임 df의 경우 :
dummy_data1 = {'category': ['White', 'Black', 'Hispanic','White'],
'Pop':['75','85','90','100'],'White_ratio':[0.6,0.4,0.7,0.35],'Black_ratio':[0.3,0.2,0.1,0.45], 'Hispanic_ratio':[0.1,0.4,0.2,0.20] }
df = pd.DataFrame(dummy_data1, columns = ['category', 'Pop','White_ratio', 'Black_ratio', 'Hispanic_ratio'])
먼저 카테고리를 확인한 다음 'Pop'의 값에 해당 열의 비율 값을 곱하여이 데이터 프레임에 새 열 'pop_n'을 추가하고 싶습니다. 첫 번째 행의 경우 카테고리는 'White'이므로 75에 0.60을 곱하고 45를 pop_n 열에 넣어야합니다. 나는 다음과 같은 것을 쓰는 것에 대해 생각했다.
df['pop_n']= (df['Pop']*df['White_ratio']).where(df['category']=='W')
이것은 하나의 카테고리에만 적용됩니다. 도움을 주시면 감사하겠습니다.
감사.
DataFrame.filter
및 사용 DataFrame.lookup
:
먼저 이름에있는 filter
열을 가져 오는 데 사용 합니다 ratio
. 그런 다음 밑줄 앞의 첫 번째 단어 만 분리하고 유지합니다.
마지막으로 값을 이러한 열과 lookup
일치시키는 데 사용 합니다 category
.
# df['Pop'] = df['Pop'].astype(int)
df2 = df.filter(like='ratio').rename(columns=lambda x: x.split('_')[0])
df['pop_n'] = df2.lookup(df.index, df['category']) * df['Pop']
category Pop White_ratio Black_ratio Hispanic_ratio pop_n
0 White 75 0.60 0.30 0.1 45.0
1 Black 85 0.40 0.20 0.4 17.0
2 Hispanic 90 0.70 0.10 0.2 18.0
3 White 100 0.35 0.45 0.2 35.0
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다