簡體   English   中英

錯誤:在pandas中無法將float NaN轉換為整數

[英]Error:cannot convert float NaN to integer in pandas

我有數據幀:

   a            b     c      d
0 nan           Y     nan   nan
1  1.27838e+06  N      3     96
2 nan           N      2    nan
3  284633       Y     nan    44

我嘗試將非零的數據更改為整數類型以避免指數數據(1.27838e + 06):

f=lambda x : int(x)
df['a']=np.where(df['a']==None,np.nan,df['a'].apply(f))

但我得到錯誤也事件認為我希望更改非null值的dtype,任何人都可以指出我的錯誤? 謝謝

Pandas無法存儲整數的NaN值 嚴格地說,您可以使用具有混合數據類型的列,但這可能在計算上效率低下。 所以,如果你堅持,你可以做到

df['a'] = df['a'].astype('O')
df.loc[df['a'].notnull(), 'a'] = df.loc[df['a'].notnull(), 'a'].astype(int)

據我在pandas文檔中讀到,無法表示整數NaN

“由於沒有從頭開始構建NumPy的高性能NA支持,主要的傷亡是能夠在整數數組中表示NA。”

正如后面所解釋的那樣,這是由於內存和性能原因,以及最終的系列仍然是“數字”。 一種可能性是使用dtype=object數組。

暫無
暫無

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

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