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

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

嵌套的 If-else pandas 數據框

嵌套的 If-else pandas 數據框

湖上湖 2023-10-11 16:16:14
我有一個輸入數據框df,我想在其中轉換列A...A   B    asd0   dsf1   ewr2   dfds3   sdf...進入我的預期輸出df1:        Aa  Ab  Ac              Bb                                asd        0   0   0               dsf        1   0   0               ewr        1   1   0               dfds        1   1   1               sdf代碼:if df['A'] == '' :    df1['Aa'] = ''elif df['A'] == 1 :    df1['Aa'] == 1elif df['A'] == 0 :    df1['Aa'] == 0else:    df1['Aa'] == 1錯誤:if df['A'] == '' :                                                                                                                                                         File "C:\Python\Python38\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__                                                                                                  raise ValueError(                                                                                                                                                                        ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().excel中類似的公式 B2 =IF(A2=1,1,IF(A2="","",IF(A2=0,0,1)))相似地; C2 = IF(A2=2,1,IF(A2="","",IF(A2=0,0,1)))嘗試用 python 實現類似的東西。請幫忙??!邏輯:if value in df['A'] == ''; new column 'Aa,Ab,Ac' in df1 == ''if value in df['A'] == 1; new column 'Aa' in df1 == 1, and rest (Ab,Ac) == 0if value in df['A'] == 2; new column 'Aa, Ab' in df1== 1, and rest (Ac) == 0if value in df['A'] == 3; new column 'Aa,Ab,Ac' in df1 == 1因此,流程可能類似于:df1:A   Aa  Ab  Ac              Bb                            asd0   0   0   0               dsf1   1   0   0               ewr2   1   1   0               dfds3   1   1   1               sdf稍后只需刪除列即可A。所以Final df1        Aa  Ab  Ac              Bb                                asd        0   0   0               dsf        1   0   0               ewr        1   1   0               dfds        1   1   1               sdf
查看完整描述

2 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

找到了一種方法來做到這一點,只需將其放入函數中,您也可以將其用于其他嵌套循環


   conditions = [

        (df['A'] == 0),

        (df['A'] == 1),

        (df['A'] > 1)]

    choices = [0, 1, 1]

    df1['Aa'] = np.select(conditions, choices, default='null')


查看完整回答
反對 回復 2023-10-11
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

IIUC,嘗試:


import pandas as pd    

df = pd.DataFrame({'a':["",0,1,2,3]})

df['new_a'] = pd.to_numeric(df['a'], errors='coerce')

df['Aa'] = df['new_a'].apply(lambda x: np.nan if math.isnan(x) else (0 if x==0 else (OTHER CONDITION)))

您可以使用類似的邏輯來創建“Ab”、“Ac”和“Bb”


查看完整回答
反對 回復 2023-10-11
  • 2 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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