2017-09-19 32 views
0

我有两个CSV,每个都有大约1M行,n列,具有相同的列。我想要最有效的方法来比较两个文件,找出可能存在差异的地方。我宁愿用Python解析这些数据,而不愿使用任何与Excel相关的工具。比较Python中两个几乎相同的CSV的最有效方法?

+1

请在输入文件中添加示例代码和几行代码。 –

回答

2

你使用熊猫吗?

import pandas as pd 
df = pd.read_csv('file1.csv') 
df = df.append(pd.read_csv('file2.csv'), ignore_index=True) 

# array indicating which rows are duplicated 
df[df.duplicated()] 

# dataframe with only unique rows 
df[~df.duplicated()] 

# dataframe with only duplicate rows 
df[df.duplicated()] 

# number of duplicate rows present 
df.duplicated().sum() 
+0

大熊猫是否会自动处理大写字母的字符串,还是需要先处理?例如'约翰'vs'约翰'。 –

+0

它自动处理它。它没有看到'约翰'等于'约翰'。如果这是个问题,可以使用'df ['column_name'] = df ['column_name']。str.lower()'将所有字符串值转为小写。 –

+0

这太棒了;谢谢!我会对熊猫图书馆做一些研究! –

1

一种有效的方法是将读出从第一文件(用更少的行数)的每一行,并保存在像设置或字典,从中可以访问使用O(1)复杂的对象。

,然后读取第二个文件的线条和检查它是否存在于设置与否。

+0

谢谢你,实际上,我正在寻找一个实际的解决方案,但我知道这仍然是我如何使其高效的正确答案,所以我想加注并响应。谢谢! –

相关问题