簡體   English   中英

使用 if else 語句編寫列表推導式

[英]Writing a list comprehension with if else statement

我正在嘗試編寫一個列表推導式,如果該值是一個整數,它將乘以 1,000,000,但如果它不是一個整數,則該值將是“np.NaN”。

這是我的代碼:

energy['Energy Supply'] = [n*1000000 if isinstance(n,int) == True else n == 'np.Nan' for n in energy['Energy Supply']]

返回的數據框顯示 ['Energy Supply'] 列,其中沒有整數。

然后我嘗試編寫另一個列表理解來解決這個問題:

energy['Energy Supply'] = [n.replace(to_replace='False',value='np.Nan') for n in energy['Energy Supply']]

我收到此錯誤:

-------------------------------------------------- ------------------------- AttributeError Traceback (most recent call last) in () 5 energy['Energy Supply'] = [n.replace( to_replace='False',value='np.Nan') for n in energy['Energy Supply']] 6 return energy ----> 7 answer_one()

在 answer_one() 3 energy.columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'] 4 energy['Energy Supply'] = [n*1000000 if isinstance(n,int ) == True else n == str('np.nan') for n in energy['Energy Supply']] ----> 5 energy['Energy Supply'] = [n.replace(to_replace='False) ',value='np.Nan') for n in energy['Energy Supply']] 6 返回能量 7 answer_one()

in (.0) 3 energy.columns = ['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'] 4 energy['Energy Supply'] = [n*1000000 if isinstance(n, int) == True else n == str('np.nan') for n in energy['Energy Supply']] ----> 5 energy['Energy Supply'] = [n.replace(to_replace=') False',value='np.Nan') for n in energy['Energy Supply']] 6 返回能量 7 answer_one()

AttributeError: 'bool' 對象沒有屬性 'replace'

提前致謝,堆棧溢出社區。

你的第一個代碼不能正常工作 b/c 你在 else 之后使用==

energy['Energy Supply'] = [n*1000000 if isinstance(n,int) == True else 'np.Nan' for n in energy['Energy Supply']]

要擺脫False您可以使用映射

d={False:np.nan}
energy['Energy Supply']=energy['Energy Supply'].map(d)

我不確定我是否正確理解你,但如果是這樣 - 這行得通嗎?

energy['Energy Supply'] = [n*1000000 if isinstance(n,int) == True else 'np.Nan' for n in energy['Energy Supply']]

首先你不需要做相等檢查n == np.nan ,但你必須初始化為n = np.nan 由於列表推導式中的初始化不需要 =,因此可以作為energy['Energy Supply'] = [n * 1000000 if isinstance(n, int) == True else np.nan for n in energy['Energy Supply']] 這將解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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