2017-09-09 16 views
0

私は利益を持つ新しい列を追加するはずの関数を持っています。計算フィールドのパンダに間違った値を追加

def profit(data): 
    for index, row in data.iterrows(): 
     #print row[0] 
     profir_margin_L_A = 0.04 
     profir_margin_E = 0.02 
     if row[2]== 'Latin America': 
#  row['profit'] = data.apply(lambda row: row[8]* profir_margin_L_A) 
      data['profit'] = data['amount_eur_y'] * profir_margin_L_A 

     else: 
#    row['profit'] = data.apply(lambda row: row[8]* profir_margin_E) 
      data['profit'] = data['amount_eur_y'] * profir_margin_E 
    return data 

ヨーロッパだけでなく、すべての行で0.02%を返します。

私もこれを試しましたが、1つの条件でのみ動作します。

test['profit'] = (test['amount_eur_y']*profir_margin_L_A).where(test['region'] == 'Latin America') 

私は必要なものを計算しましたが、私はヨーロッパの条件を組み合わせることはできません。

最終的に、私は正しい利益を計算したデータフレームが必要です。

enter image description here

答えて

1

あなたがそうでなければprofir_margin_L_Aregion == 'Latin America'profir_margin_Eに等しい配列を作成するnumpy.whereを使用し、次いでamount_eur_yカラムでそれを掛けることができる。

test['profit'] = test['amount_eur_y'] * pd.np.where(test['region'] == 'Latin America', profir_margin_L_A, profir_margin_E) 
関連する問題