pandas string轉dataframe

今天業務上碰到用pandas處理一個大文件的內存不夠問題,需要做concat 合併多個文件,每個文件數據在1.4億行左右。當時第一反應是把dataframe分割成多塊小文件處理,後面發現即使pandas內存問題解決了,用pickle做保存數據時也會提升內存不夠的報錯,後來把dataframe對象轉化成string,發現內存佔用減少了近一半。所以打算用先轉成string再dump到離線文件裏,官網文檔上只有to_string的說明,而從string轉dataframe卻沒有提供直接的函數。

其實很簡單,我們可以把string放到一個文件對象裏,然後通過read_csv函數來創建dataframe對象。

import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO

import pandas as pd

TESTDATA=StringIO("""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
""")

df = pd.read_csv(TESTDATA, sep=";")

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章