繁体   English   中英

检查 pandas 中数据框中的一行中的元素是 NaN 然后替换它

[英]check on element in a row in a data frame in pandas is NaN then replace it

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

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

但它不起作用。 结果和以前一样。 我应该怎么办?

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

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

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

Output:

     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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM