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