我有一个包含2700万个元组的列表,现在我想从这个元组创建一个数据帧,但问题是,它需要花费太多时间而系统会卡住。
单个元组中的数据为('C0000005', 'RB', 'C0036775', '')
并且列表是包含appx的tablelist。 2700万行,这就是我创建数据帧的方式。
df_table = pd.DataFrame(tablelist,columns= ['a','b','c','d'])
如何以有效的方式创建数据框?
答案 0 :(得分:1)
确保您的机器无法更换。
这是我的时间:
In [175]: l = [('C0000005', 'RB', 'C0036775', '')] * 27000000
In [176]: len(l)
Out[176]: 27000000
In [177]: %timeit pd.DataFrame(l, columns=list('abcd'))
1 loop, best of 3: 2.95 s per loop
In [179]: df = pd.DataFrame(l, columns=list('abcd'))
In [180]: df.shape
Out[180]: (27000000, 4)
In [181]: df.memory_usage()
Out[181]:
Index 80
a 216000000
b 216000000
c 216000000
d 216000000
dtype: int64
In [182]: df.memory_usage().sum()
Out[182]: 864000080
In [183]: df.memory_usage().sum()/1024**3
Out[183]: 0.8046627789735794