如何在python中比较两个单独的CSV文件中的数据吗?



我对Python非常陌生,所以我希望得到任何帮助。

问题陈述给定两个相似的csv文件,判断它们是否相同。如果不是,则返回每列中的差异。应该分别为每一列检查断言条件。行有一个惟一的id。这个id可以/不能排序,例如- csv1中id=1的类似行可能是csv2中id=1的最后一行。

,:

  1. 遍历csv1
  2. 中的行
  3. 查找行id,然后在csv2中找到该id。
  4. 现在,比较这两行数据,并分别返回每列的差异。

请告诉我这个问题的解决方法,或者我应该怎么做。

更新:嗨,谢谢你的回答。我实现了我想要的结果通过这个:

def compare_column_name(expectedObj, resultObj, index):
val_expected = expectedObj['column']
val_result = (resultObj['column'].values[0])
if((not val_expected) and (not val_result)):
print("Null values")
else:
assert val_expected == val_result, (
'column value discrepancy at index = ' + str(index))
for index, row in df1.iterrows():
Id = (row['id'])
v = df2.loc[(df2['id'] == Id)]
compare_column_name(row, v, index)

您可以通过datacompy: https://capitalone.github.io/datacompy/比较两个数据集

from io import StringIO
import pandas as pd
import datacompy
data1 = """acct_id,dollar_amt,name,float_fld,date_fld
10000001234,123.45,George Maharis,14530.1555,2017-01-01
10000001235,0.45,Michael Bluth,1,2017-01-01
10000001236,1345,George Bluth,,2017-01-01
10000001237,123456,Bob Loblaw,345.12,2017-01-01
10000001239,1.05,Lucille Bluth,,2017-01-01
"""
data2 = """acct_id,dollar_amt,name,float_fld
10000001234,123.4,George Michael Bluth,14530.155
10000001235,0.45,Michael Bluth,
10000001236,1345,George Bluth,1
10000001237,123456,Robert Loblaw,345.12
10000001238,1.05,Loose Seal Bluth,111
"""
df1 = pd.read_csv(StringIO(data1))
df2 = pd.read_csv(StringIO(data2))
compare = datacompy.Compare(
df1,
df2,
join_columns='acct_id',  #You can also specify a list of columns
)
compare.matches(ignore_extra_columns=False)
# False
# This method prints out a human-readable report summarizing and sampling differences
print(compare.report())

如果您提供了数据框架就更好了。

让我们假设您的dfs是dfdf_2,并且您的行id在id列。您可以将基于id的相应行的列进行比较:

df.apply(lambda x: df_2[df_2['id'] == x['id']].squeeze() == x, axis=1)

相关内容

  • 没有找到相关文章