2017-05-08 56 views

回答

1

我運行這個

int('260,327,021') 

,並得到這個

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-448-a3ba7c4bd4fe> in <module>() 
----> 1 int('260,327,021') 

ValueError: invalid literal for int() with base 10: '260,327,021' 

我向你保證,不是你的數據框中的所有東西都是數字。它可能看起來像一個數字,但它是一個帶有逗號的字符串。

你要更換你的逗號,然後打開一個int

pd.Series(['260,327,021']).str.replace(',', '').astype(int) 

0 260327021 
dtype: int64 
+0

哦哇。非常感謝!所以這意味着我必須替換一切。 df中的每個數字看起來都像我給的那個。 – Caribgirl

+0

@Caribgirl是的!除非你從一個文件中讀取,否則你可以傳遞一個參數給'read_csv'函數,即'thousands =','' – piRSquared

+0

非常感謝你的工作!我的天啊。我一直在努力解決這個問題好幾個小時!謝謝!!!!! – Caribgirl

0

其他人可能會遇到以下問題,當字符串是float:

>>> int("34.54545") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: '34.54545' 

的辦法解決這個先轉換爲浮點數然後轉換爲int:

>>> int(float("34.54545")) 
34 

或熊貓具體如下:

df.astype(float).astype(int) 
相關問題