我有一個大的 csv(約 20 百萬行),我想將一列從字符串轉換為浮點數。我這樣做:df['sale']=df['sale'].str.replace(",", ".").astype('float32')和銷售看起來像:86,260020,2800 123,500030,75008,3600該命令似乎不穩定,即有時會出現以下內存錯誤:MemoryError Traceback (last last call last) in () ----> 1 df['sale']=df['sale'].str.replace(",", ".").astype('float32') ;這個錯誤到底是什么,我該如何解決?謝謝!
1 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
而不是在加載后進行轉換,這是一個內存密集型操作。您可以指定小數點分隔符是歐式風格通過傳遞帕拉姆decimal=','到read_csv:
pd.read_csv(FILENAME, decimal=',')
例子:
In[24]:
t="""data
86,2600
20,2800
123,5000
30,7500
8,3600"""
df = pd.read_csv(io.StringIO(t), decimal=',', sep=';')
df
Out[24]:
data
0 86.26
1 20.28
2 123.50
3 30.75
4 8.36
請注意,我會通過,sep=';'否則它將把上面的內容視為 2 列,因為默認分隔符是逗號。
我們可以看到輸出顯示它是十進制的,我們可以確認dtype使用.info():
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 1 columns):
data 5 non-null float64
dtypes: float64(1)
memory usage: 120.0 bytes
添加回答
舉報
0/150
提交
取消