【问题标题】:How to compare Two dataframes row by row?如何逐行比较两个数据框?
【发布时间】:2020-06-05 17:59:31
【问题描述】:

我有 152431 X 15 形状的数据框,我想要两帧的差异


# df1:
Date       Fruit  Num  Color 
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange  8.6 Orange
2013-11-24 Apple   7.6 Green
2013-11-24 Celery 10.2 Green

# df2:
Date       Fruit  Num  Color 
2013-11-24 Banana 22.1 Yellow
2013-11-24 Orange  8.6 Orange
2013-11-24 Apple   7.6 Green
2013-11-24 Celery 10.2 Green
2013-11-25 Apple  22.1 Red
2013-11-25 Orange  8.6 Orange

【问题讨论】:

标签: python pandas dataframe machine-learning data-science


【解决方案1】:

如果您的数据帧存储在两个文件中,我会在循环中读取每个文件的每一行并创建一个包含差异的列表:

old_file_path = 'INSERT_FILE_PATH_OF_FILE_A'
new_file_path = 'INSER_FILE_PATH_OF_FILE_B'

with open(old_file_path, 'r', encoding='utf-8') as old ,open(new_file_path, 'r', encoding='utf-8') as new:
    fileone = old.readlines()
    filetwo = new.readlines()

total_of_changes=[]
for line in filetwo:
    if line not in fileone:
        total_of_changes.append(line)

【讨论】:

  • 不,请不要那样做!尤其是在使用 pandas 时,有 比读取和比较每个文件 逐行 更好的选择。对于 152k 行,这绝对是低效的,而且不符合 Python 和笨拙。
  • 很公平,更 Python 的方法也会对我有所帮助。你有没有想到一个特定的功能? :)
  • 是的,Chris A 在他的评论中发布了一个不错的解决方案:pd.concat([df1, df2]).drop_duplicates(keep=False)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多