簡體   English   中英

如何將python中的列表與另一個列表進行比較並將其替換為Nan?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM