【发布时间】:2022-01-28 08:03:01
【问题描述】:
我有一个大文本文件(300000000 行),但其中充满了不需要的数据,我想将其删除。这些数据是包含字符串“0000e”的数据。
我试过了:
f=pd.read_csv('File.txt', skiprows=139, header=None, index_col=False)
f=f.iloc[:,0]
f1=f[f.str.contains("0000e")==False]
和
f=pd.read_csv('file.txt', skiprows=139, header=None, index_col=False, chunksize=50)
dfs = pd.concat([x[x[0].str.endswith('000e')==False] for x in f])
但它相当长,有没有更快的方法来跳过一些包含某个字符串的行?也许用 na_values?
【问题讨论】:
-
你对这些行的意图是什么?您还可以使用
memory_map选项来提高加载阶段以及可能的其他阶段/的性能。 -
为了加快速度,您是否尝试过将 .txt 文件读入文件对象(在这种情况下不是通过 pandas),然后将每一行保存到字符串列表中。将包含“000e”的行添加到列表中时排除它们。甚至可以是一个元组。
-
然后,如果您的文件需要更多分析,您可以将其保存到数据框并继续。