我有大量的csv数据,大约40GB大小,我需要处理(我们称之为“body”)。正文中每个文件中的数据都由单列CSV文件组成。每一行都是由单词和短句组成的关键字
Dog
Feeding cat
used cars in Brighton
trips to London
.....
这些数据需要与另一组文件(这个文件大小为7GB,我称之为“Removals”)进行比较,Removals中的任何关键字都需要识别并从正文中删除。清除量的数据类似于体内的数据,即:
Guns
pricless ming vases
trips to London
pasta recipes
........
虽然我有一个方法,将完成工作,这是一个非常缓慢的方法,可能需要一个很好的星期来完成。它是一种多线程方法,其中7GB主体中的每个文件都在for循环中与主体中的文件进行比较。它将删除文件中的列强制转换为列表,然后过滤正文文件以保留不在该列表中的任何行。然后将过滤后的数据附加到输出文件:
def thread_worker(file_):
removal_path="removal_files"
allFiles_removals = glob.glob(removal_path + "/*.csv", recursive=True)
print(allFiles_removals)
print(file_)
file_df = pd.read_csv(file_)
file_df.columns = ['Keyword']
for removal_file_ in allFiles_removals:
print(removal_file_)
vertical_df = pd.read_csv(vertical_file_, header=None)
vertical_df.columns = ['Keyword']
vertical_keyword_list = vertical_df['Keyword'].values.tolist()
file_df = file_df[~file_df['Keyword'].isin(vertical_keyword_list)]
file_df.to_csv('output.csv',index=False, header=False, mode='a')
很明显,我的主要目的是想办法解决这个问题快一点。是吗熊猫是最好的方法吗?我倾向于在处理CSV文件时默认使用它。你知道吗
你可以这样做:
相关问题 更多 >
编程相关推荐