簡體   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