[英]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.