亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將大型csv的列從字符串轉換為浮點數時出現pandas內存錯誤

將大型csv的列從字符串轉換為浮點數時出現pandas內存錯誤

呼如林 2022-01-11 16:56:16
我有一個大的 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


查看完整回答
反對 回復 2022-01-11
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號