2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以像這樣對(duì)操作進(jìn)行矢量化,而不是映射:
df['pet_level'] = df['dog_allowed'] * 1 + df['cat_allowed'] * 2

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)前有效的方法是使用所需的條件語(yǔ)句定義一個(gè)函數(shù)。
def plvl(db):
if db['cats_allowed'] == 0 and db['dogs_allowed'] == 0:
val = 0
elif db['cats_allowed'] == 1 and db['dogs_allowed'] == 0:
val = 1
elif db['cats_allowed'] == 0 and db['dogs_allowed'] == 1:
val = 2
elif db['cats_allowed'] == 1 and db['dogs_allowed'] == 1:
val = 3
return val
然后通過沿 columns( axis=1) 應(yīng)用函數(shù)來(lái)傳遞該函數(shù)以創(chuàng)建所需的列。
df['pet_level'] = df.apply(plvl, axis=1)
我不確定這是否是性能效率最高的,但出于測(cè)試目的,它目前可以工作。我敢肯定,還有更多的 Pythonic 方法,它們的要求不高,而且對(duì)了解同樣有幫助。
添加回答
舉報(bào)