簡體   English   中英

如何解決 Dataframe to_numeric 錯誤(Python)?

[英]How to solve Dataframe to_numeric Error (Python)?

我有 dataframe 包含浮點數。 我想以 sum mult 的形式進行數字運算。 ETC。 。 列類型是 object。所以我必須將此列更改為數字列。 我使用 to_numeric function 但它給了我 NaN 作為結果。

我怎么解決這個問題?

代碼:

#import libraries
import pandas as pd

data = pd.read_csv('file.csv', engine='python', delimiter=';')

#change object columns into a numeric columnn
for i in data.columns :
    data[i] = pd.to_numeric(data[i], errors='coerce')

Dataframe

t0 (actual) t0  t0,lower    t0,upper
0   11861,6318726842    0   0   0
1   4761,43316  5709,1728515625 3776,725188260803   7939,908970830105
2   36,22841951973635   0   0   0
3   583,3716479196096   0   0   0
4   25087,16436661841   26040,7890625   21825,20941707611   31905,394350044822
....

結果:

    t0 (actual) t0  t0,lower    t0,upper
0   NaN NaN NaN NaN
1   NaN NaN NaN NaN
2   NaN NaN NaN NaN
3   NaN NaN NaN NaN
4   NaN NaN NaN NaN

我無法重現您的錯誤,但我假設您可以將decimal=","添加到pd.read_csv

文檔

十進制:str,默認'.'
識別為小數點的字符(例如,對歐洲數據使用',')。

所以你的代碼看起來像這樣:

#import libraries
import pandas as pd

data = pd.read_csv('file.csv', engine='python', delimiter=';', decimal=",")

#change object columns into a numeric columnn
for i in data.columns :
    data[i] = pd.to_numeric(data[i], errors='coerce')

如果將errorscoerce更改為raise ,您將看到pandas無法將這些值轉換為數字數據類型。 這是因為它無法將,識別為小數點分隔符(默認情況下為. )。 這意味着errors = 'coerce'會將這些值替換為NaN

看起來,如果您嘗試在從.csv文件中讀取這些值后立即轉換這些值,則您應該指定在read_csv調用中使用的小數點分隔符。 然后您將不需要手動轉換這些值。

data = pd.read_csv('file.csv', engine='python', delimiter=';', decimal = ',')

但是,如果這些值來自您的腳本,則您需要將,值替換為. 在您的字符串值中:

for i in data.columns :
    data[i] = pd.to_numeric(data[i].str.replace(',','.'), errors='coerce')

暫無
暫無

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

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