如何使用Pandas read_csv将大型列表快速转换为数据帧?
import Pandas as pd
x = '1,2,3,4,5,7,8,9'
df = pd.read_csv(x)
我知道我可以用逗号分割字符串 - >列入清单 - >转换为数据帧,但是想知道有没有办法用pd.read_csv做更快的事情?
答案 0 :(得分:4)
x = '1,2,3,4,5,7,8,9'
df = pd.read_csv(pd.io.common.StringIO(x), header=None)
df
0 1 2 3 4 5 7 8
0 1 2 3 4 5 7 8 9
使用pd.read_csv
考虑更大的字符串
y = '\n'.join([','.join(['0,1,2,3,4,5,6,7,8,9'] * 100)] * 1000)
并比较这两个选项的时间
%timeit pd.DataFrame([l.split(',') for l in y.split('\n')]).astype(int)
%timeit pd.read_csv(pd.io.common.StringIO(y), header=None)
1 loop, best of 3: 200 ms per loop
10 loops, best of 3: 125 ms per loop
如果我们需要做的就是拆分字符串,split
会更快。但是,pd.read_csv
为我们做的事情之一是解析整数。分手后不得不花费额外的开销。