亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲得兩個條件語句以將信息拉到同一列?

如何獲得兩個條件語句以將信息拉到同一列?

www說 2023-05-16 14:23:42
我需要在兩種情況下進行計算,但輸出出現在同一列中Erisa (Local)。我需要檢查列中是否有值ERISA Percentage,如果有,則將該值乘以另一列“凈額(本地)”。如果該ERISA Percentage列沒有值,我想檢查該ERISA Status列中的特定單詞Erisa。如果該行有那個詞,那么我需要在 column 中提取值Net Amount Local。我嘗試了一個elif語句和一個 or 語句,但出現無效語法錯誤。有誰知道我應該對下面的代碼進行什么修改?ecdi['Erisa (Local)'] = ecdi.apply(lambda x: x['Net Amount (Local)']  * x['ERISA Percentage']/100 if x['ERISA Percentage']>0 and x['ERISA Status'] == "Erisa"elif ecdi['Erisa (Local)'] = ecdi.apply(lambda x: x['Net Amount (Local)'] if x['ERISA Percentage'] == 0 and x['ERISA Status'] == "Erisa"                                                                                       else 0, axis=1)
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

最佳做法是對性能進行矢量化計算。因此我用過np.where

  1. 反轉你的邏輯,當百分比小于等于零且狀態不是Erisa時默認為零

  2. 如果百分比 >零則標準計算

  3. 留下一個案例,它是Erisa并且百分比 <

  4. 為了更好地衡量,我添加了一個列檢查以更好地測試邏輯是否按定義工作

r = 10

df = pd.DataFrame({"ERISA Percentage":[random.randint(-25,100) for i in range(r)],

 "Net Amount (Local)":[random.randint(50,125) for i in range(r)],

 "ERISA Status":[["Erisa","a","b"][random.randint(0,2)] for i in range(r)]

})


df = df.assign(**{"Erisa (Local)":lambda dfa: 

             np.where((dfa["ERISA Percentage"]<=0) & (dfa["ERISA Status"]!="Erisa"), 0, 

                     np.where(dfa["ERISA Percentage"]>0, 

                              dfa["ERISA Percentage"]/100*dfa["Net Amount (Local)"],

                              dfa["Net Amount (Local)"])),

             "check":lambda dfa: dfa["Erisa (Local)"]==dfa["Net Amount (Local)"]

            })


print(df.to_string(index=False))

輸出


 ERISA Percentage  Net Amount (Local) ERISA Status  Erisa (Local)  check

               79                  56        Erisa          44.24  False

               68                 124            b          84.32  False

               33                 124        Erisa          40.92  False

              -21                 100            b           0.00  False

               42                 124            b          52.08  False

               -5                  76            b           0.00  False

               38                  95        Erisa          36.10  False

               20                 109            b          21.80  False

               55                  63            a          34.65  False

              -13                 106        Erisa         106.00   True


查看完整回答
反對 回復 2023-05-16
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號