![](/img/trans.png)
[英]Replace nan's for a list according to another list with different sizes python
[英]How to compare a list in python with another list and replace it with Nan?
delta_list = ['2','3','4',nan]
lb = ['1','2','3','4']
ub = ['5','6','7','8']
健康)狀況:
flag_1 = [np.where((np.array(delta_list) > np.array(lb)) & (np.array(delta_list) < np.array(ub)),0,1)]
此處:如果nan
與任何值進行比較,它會returning 1
(很明顯),但我希望它就像comparison is with nan
delta_list
comparison is with nan
進行comparison is with nan
delta_list
,它應該始終return nan
而不是flag_1 condition
。 我如何實現這一目標? 我應該創建一個新列表並將索引與 delta_list 進行比較並用 nan 替換該索引值嗎? 請幫忙!!
預期輸出: flag_1 = ['1','1','1','1']
flag_1 =['1','1','1',nan]
輸出: flag_1 =['1','1','1',nan]
nan
因為delta_list 4th element is nan
,因此
[np.where((np.array(delta_list) > np.array(lb)) & (np.array(delta_list) < np.array(ub)),0,1)]
如果在 delta_list 中遇到 nan 則根本不應該進行評估,它應該簡單地在我的flag_1
列表中return nan
如果數字小於10
可能比較字符串,所以使用numpy.select
和新條件進行比較NaN
s:
delta_list = ['2','3','4',np.nan]
lb = ['1','2','3','4']
ub = ['5','6','7','8']
m1 = (np.array(delta_list) > np.array(lb)) & (np.array(delta_list) < np.array(ub))
m2 = pd.isna(delta_list)
flag_1 = np.select([m2, m1], [np.nan, '1'], default='0')
print (flag_1)
['1' '1' '1' 'nan']
如果需要避免字符串nan
可以使用None
:
flag_1 = np.select([m2, m1], [None, '1'], default='0')
print (flag_1)
['1' '1' '1' None]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.