私は2つの列がProductID
とBalance
のデータフレームを持っています。 一部のBalance
の列はvalues =0 (df['Balance']=0)
です。 私のデータフレームは、異なる製品が含まれていますデータフレームのあるpython keyerrorとラムダを適用
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
商品コードに基づいて:balance_average = df.pivot_table(values='Balance', index='ProductID')
が識別ゼロバランス行:
zero_bool = (df['Balance'] == 0)
適用balance_average:
私は以下のコードを使用しています
私は、Python 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(値= '残高'、index = 'ProductID')、balance_average_dict = balance_average.to_dict()、 df.loc [zero_bool、 '残高'] = df.loc [zero_bool、' ProductID ']。apply(lambda x:balance_average_dict [x]) – mnr