我想根據兩列的值基於if語句將新列添加到數據框。即如果列x ==無,則列y其他列x在帶有lambda函數的數據框中使用if語句
下面是我寫的腳本,但不起作用。有任何想法嗎?
dfCurrentReportResults['Retention'] = dfCurrentReportResults.apply(lambda x : x.Retention_y if x.Retention_x == None else x.Retention_x)
另外我得到這個錯誤消息: AttributeError的:( 「 '系列' 對象沒有屬性 'Retention_x'」,在索引BUSINESSUNIT_NAME'u'occurred)
供參考:BUSINESSUNIT_NAME是第一列命名
附加信息:
我的數據打印出來這個樣子的,我想添加一個第3列,如果有其他人保持NaN的取一個值。
Retention_x Retention_y
0 1 NaN
1 NaN 0.672183
2 NaN 1.035613
3 NaN 0.771469
4 NaN 0.916667
5 NaN NaN
6 NaN NaN
7 NaN NaN
8 NaN NaN
9 NaN NaN
UPDATE: 最終我是有問題引用Null值或爲空在我的數據幀的最後一行代碼我用還包括軸= 1回答我的問題。
dfCurrentReportResults['RetentionLambda'] = dfCurrentReportResults.apply(lambda x : x['Retention_y'] if pd.isnull(x['Retention_x']) else x['Retention_x'], axis = 1)
感謝@EdChum,@ strim099和@aus_lacy您所有的輸入。隨着我的數據集變大,如果我注意到性能問題,我可能會切換到np.where選項。
是'None'字符串還是'NaN'?你能否提供你的數據框架樣本集,以便我們能夠更好地調試任何問題? –
@aus_lacy我對None的使用基本上是一個嘗試,以確定值是否爲空,所以我猜這是一個NaN並且是None? – IcemanBerlin
你打電話給你的'申請'列是什麼?您的數據樣本可以幫助您更快得到答案。 –