检查熊猫数据框中一行中的元素是否为NaN,然后​​将其替换

时间:2020-07-16 13:41:33

标签: python pandas dataframe

我的数据框的一部分如下:

personId    ActivityType    Time         Act_delay
1473237100  remote_work_4   57651.0      57651.0    
1473237100  home_2          59185.0      59185.0    
1473237100  remote_work_5   65849.0      65849.0    
1473237100  home_1          NaN          0.0    

,我想检查“ ActivityType”列是否等于“ home_1”,如果“ Time”列为NaN,则将“ Act_delay”列替换为10800。 我有以下代码”


for i, row in df.iterrows():
            if row['ActivityType'] == "home_1":
                if  row['Time'] == np.object:
                    df.loc[i,'Act_delay'] = 10800.0

,但不起作用。结果与以前相同。我该怎么办?

1 个答案:

答案 0 :(得分:3)

不建议在数据框中循环,相反,我们可以利用bitwise &来组合条件(检查变量mask),然后使用df.loc[]进行布尔索引并选择所需的序列分配值。

mask = df['ActivityType'].eq('home_1') & df['Time'].isna()

df.loc[mask, 'Act_delay'] = 10800

输出:

     personId   ActivityType     Time  Act_delay
0  1473237100  remote_work_4  57651.0    57651.0
1  1473237100         home_2  59185.0    59185.0
2  1473237100  remote_work_5  65849.0    65849.0
3  1473237100         home_1      NaN    10800.0