我在 pandas 数据框中快速读取 203 mb 文件时遇到了一些麻烦。我想知道是否有更快的方法可以做到这一点。以下是我的功能:
import pandas as pd
import numpy as np
def file(filename):
df = pd.read_csv(filename, header=None, sep='delimiter', engine='python', skiprows=1)
df = pd.DataFrame(df[0].str.split(',').tolist())
df = df.drop(df.columns[range(4,70)], axis=1)
df.columns = ['time','id1','id2','amount']
return df
当我使用神奇的 %timeit
函数时,读取文件并将其上传到 python 笔记本大约需要 6 秒。我可以做什么来加快速度?
谢谢!
最佳答案
更新:查看您的逻辑,您似乎不需要首先使用 sep='delimiter'
因为您将仅使用(拆分)第一个(索引=0) 列,因此您可以简单地执行以下操作:
df = pd.read_csv(filename, header=None, usecols=[0,1,2,3],
names=['time','id1','id2','amount'],
skipinitialspace=True, skiprows=1)
PS 默认 read_csv()
将使用 C
引擎,如果 sep
不长于 1 个字符或者如果它是\s+
旧答案:
首先不要读取不需要的列(或者要删除的列:df.drop(df.columns[range(4,70)], axis=1)
):
df = pd.read_csv(filename, header=None, usecols=[0], names=['txt'],
sep='delimiter', skiprows=1)
然后将单个已解析的列拆分为四个:
df[['time','id1','id2','amount']] = df.pop('txt').str.split(',', expand=True)
PS,我强烈建议您将数据转换为 HDF5 格式(如果可以的话),并忘记 CSV 文件的所有这些问题;)
关于python - 更快地读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556159/