두 개의 열이있는 ProductID
및 Balance
데이터 프레임이 있습니다. 일부 Balance
열은 values =0 (df['Balance']=0)
입니다. 내 dataframe 다른 제품을 포함python keyerror with dataframe loc 및 적용 λ
Index ProductID Balance
1 10 100
**2 20 0**
3 30 200
**4 20 150
5 20 240**
6 40 100
7 30 200
내가 product ID=20 ((0 +150 + 240)/3 =130)
에 따라 평균 잔액과 인덱스 2에 제로 균형을 전가하려는.
먼저 얻는
balance_average
제품 ID를 기반으로 :balance_average = df.pivot_table(values='Balance', index='ProductID')
이 확인 제로 밸런스 행 :
zero_bool = (df['Balance'] == 0)
적용 balance_average :
나는 아래의 코드를 사용하고
내가 파이썬 3.6에서 내가 KeyError: '20'
을 얻고있다 위의 코드를 실행
df.loc[zero_bool, 'Balance'] = df.loc[zero_bool, 'ProductID'].apply(lambda x: balance_average[x])
. 20 첫 번째 제로 잔액 열의 해당 ProductID입니다. 누군가 위의 코드에 어떤 문제가 있다고 말할 수 있습니까?
여전히 KeyError를 점점 아래 코드를 시도했다. zero_bool = (df [ 'Balance'] == 0) balance_average = df.pivot_table (값 = '잔액', 색인 = 'ProductID'), balance_average_dict = balance_average.to_dict(), df.loc [ '] = df.loc [zero_bool,'ProductID ']. 적용 (lambda x : balance_average_dict [x]) – mnr