【发布时间】:2018-06-12 12:20:24
【问题描述】:
我有大约 4M 行的大数据集。我需要通过正则表达式清理它并放入 Pandas 的 DataFrame 中。这是我的代码:
# 1) reading a text file with a dataset, where 4M rows
orgfile = open("good_dmoz.txt", "r")
# 2) create an empty dataframe
df0=pd.DataFrame(columns=['url'])
# 3) creating mask for cleaning data
regex = re.compile(r"(?<=\')(.*?)(?=\')")
# 4) clearing data and put into the dataframe
for line in orgfile:
urls = regex.findall(line)
df0.url = df0.append({"url": urls[0]}, ignore_index=True)
代码在一个小片段中处理任务,但处理完整数据(4M 行)需要太长时间。我的问题是:是否可以优化代码?优化,就是降低代码执行的速度。
谢谢!
【问题讨论】:
-
你能告诉我们你用这段代码做什么吗?考虑提供一个示例输入和输出数据。
-
如果我不知道要优化什么,就无法优化。祝你好运解决你自己的问题。
-
那么每一行都有一个url吗?还是应该先检查?
append是让你的代码非常慢的原因,你只需用行df0=pandas.read_csv(orgfile).str.replace(regex,'')初始化df0就可以大大加快速度,你只需要否定正则表达式。
标签: python pandas dataframe optimization