迭代数据框的两列并根据另一列的条件替换空值

问题描述

我需要迭代数据帧中的 2 列('bounces' 和 'transactions')并根据条件替换 'bounes' 中的空值: 如果bounces.null() 和transactions>1 然后用0 替换bounces 中的空值 否则如果bounces.null()和transactions=0然后用1替换bounces中的空值

此外,这两列都有浮点值。所以我尝试了这个:

df['bounces'].fillna(2,inplace=True)
df['bounces']=df['bounces'].astype(int)
df['transactions']=df['transactions'].astype(int)
bounces = df["bounces"].tolist()
transactions = df["transactions"].tolist()
for (a,b) in zip(transactions,bounces): 
    if a>0 and b==2:
        bounces[b]=0
    elif a==0 and b==2:
        bounces[b]=1
df['bounces']=bounces

但这不起作用 请帮忙。提前谢谢你!

解决方法

我建议使用面罩技术 here 进行深潜。 面膜是解决这类问题最快的方法。

# case 1  
mask1 = pd.isnull(df['bounces']) & df["transactions"]>1
# mask application
df['bounces'][mask1] = 0

# case2
mask1 = pd.isnull(df['bounces']) & df["transactions"]==1
# mask application
df['bounces'][mask1] = 1