pandas.dataframe.duplicated非常适合在数据框中的指定列中查找重复的行。
但是,我的数据集大于内存中的数据集(甚至比我在合理的预算限制范围内扩展后的数据量还要大)。
这对我必须执行的大多数分析都很好,因为我可以遍历我的数据集(csv和dbf文件),将每个文件单独加载到内存中并按顺序执行所有操作。但是,对于重复分析,这显然不适合在整个数据集中查找重复项,但仅适用于单个文件。
是否有任何算法或方法可以在多个数据帧中查找重复项,而无需同时将它们全部加载到内存中?
答案 0 :(得分:1)
其次,只从大文件中提取关键列并将它们相互比较。
尝试对文件中键列的行进行排序,这样您只需将一行与下一行进行比较就可以检测到重复。
希望有所帮助。
答案 1 :(得分:1)
您可以散列"键"的值。列并维护您已经遇到的一组哈希码:
import hashlib
hash_set = set() # this will contain all the hash codes of rows seen
def is_duplicate(row):
m = hashlib.md5()
for c in ["column1", "column2", "column3"]:
m.update(row[c])
hash_code = m.digest()
if hash_code in hash_set:
return 1
hash_set.add(hash_code)
return 0
for df_path in [df1_path, df2_path, df3_path]: # iterate dataframes 1 by 1
df = pd.read_csv(df_path) # load the dataframe
df["duplicate"] = df.apply(is_duplicate, axis=1)
unique_df = df[df["duplicate"]==0] # a "globaly" unique dataframe
unique_df.pop("duplicate") # you don't need this column anymore
# YOUR CODE...