【问题标题】:Most efficient way to compare two near identical CSV's in Python?在 Python 中比较两个几乎相同的 CSV 的最有效方法是什么?
【发布时间】:2018-02-28 10:27:45
【问题描述】:

我有两个 CSV,每个都有大约 1M 行,n 列,具有相同的列。我想要最有效的方法来比较这两个文件,以找出可能存在的差异。我更喜欢用 Python 解析这些数据,而不是使用任何与 excel 相关的工具。

【问题讨论】:

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

标签: python algorithm csv search


【解决方案1】:

一种有效的方法是从第一个文件中读取每一行(行数较少)并保存在像 Set 或 Dictionary 这样的对象中,您可以使用 O(1) 复杂度进行访问。

然后从第二个文件中读取行并检查它是否存在于 Set 中。

【讨论】:

  • 谢谢你;我实际上是在寻找一个实际的解决方案,但我知道这仍然是关于如何提高效率的正确答案,所以我想投票并做出回应。谢谢!
【解决方案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()

【讨论】:

  • 熊猫会自动处理大写字符的字符串,还是我需要先处理?例如“约翰”与“约翰”。
  • 它会自动处理它。它不认为 'John' 等于 'john'。如果这是一个问题,您可以使用df['column_name'] = df['column_name'].str.lower() 将所有字符串值变为小写。
  • 这太棒了;谢谢!我将对 pandas 库进行一些研究!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多