gpt4 book ai didi

python - 使用 Pandas 或替代方法比较大量 (~40GB) 文本数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:06 25 4
gpt4 key购买 nike

我有大量的 csv 数据,我需要处理大约 40GB 的大小(我们称之为“正文”)。本正文中每个文件中的数据由单列 CSV 文件组成。每行是一个关键字,由单词和短句组成,例如

Dog
Feeding cat
used cars in Brighton
trips to London
.....

此数据需要与另一组文件(这个文件大小为 7GB,我将其称为“移除”)进行比较,需要识别移除中的任何关键字并将其从正文中移除。 Removals 的数据类似于 body 中的数据,即:

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')

显然,我的主要目标是弄清楚如何更快地完成这项工作。Pandas 是最好的方法吗?在处理 CSV 文件时,我倾向于默认使用它。

最佳答案

IIUC 你可以这样做:

# read up "removal"  keywords from all CSV files, get rid of duplicates
removals = pd.concat([pd.read_csv(f, sep='~', header=None, names=['Keyword']) for f in removal_files]
ignore_index=True).drop_duplicates()


df = pd.DataFrame()
for f in body_files:
# collect all filtered "body" data (file-by-file)
df = pd.concat([df,
pd.read_csv(f, sep='~', header=None, names=['Keyword']) \
.query('Keyword not in @removals.Keyword')],
ignore_index=True)

关于python - 使用 Pandas 或替代方法比较大量 (~40GB) 文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com