Pandas – 查找两个数据帧之间的差异

Pandas – 查找两个数据帧之间的差异

在这篇文章中,我们将讨论如何在pandas中比较两个DataFrames。首先,让我们创建两个DataFrames。

创建两个数据框架

import pandas as pd
  
  
# first dataframe
df1 = pd.DataFrame({
    'Age': ['20', '14', '56', '28', '10'],
    'Weight': [59, 29, 73, 56, 48]})
display(df1)
  
# second dataframe
df2 = pd.DataFrame({
    'Age': ['16', '20', '24', '40', '22'],
    'Weight': [55, 59, 73, 85, 56]})
display(df2)

输出:

Pandas - 查找两个数据帧之间的差异

检查两个数据帧是否完全相同

通过使用equals()函数,我们可以直接检查df1是否等于df2。这个函数被用来确定考虑中的两个数据框架对象是否相等。与dataframe.eq()方法不同的是,该操作的结果是一个标量布尔值,表明数据框架对象是否相等。

语法:

DataFrame.equals(df)

示例:

df1.equals(df2)

输出:

False

我们也可以对某一列进行检查。

示例:

df2['Age'].equals(df1['Age'])

输出:

False

寻找两个DataFrames之间的共同行

我们可以使用merge()函数或concat()函数。

  • merge()函数是DataFrame对象之间所有标准数据库连接操作的入口。合并函数类似于SQL内部连接,我们在两个数据框架之间找到共同的行。
  • concat()函数完成了所有繁重的工作,与axisod Pandas对象一起执行连接操作,同时对其他axis上的索引(如果有的话)执行可选的集合逻辑(union或intersection)。

实例1:使用合并函数

df = df1.merge(df2, how = 'inner' ,indicator=False)
df

输出:

Pandas - 查找两个数据帧之间的差异

例子2:使用concat函数

我们使用concat函数将第二个数据框架(df2)添加到第一个数据框架(df1)下面。然后我们使用列对新的数据框架进行分组,然后我们看到哪些行的计数大于1,这些是常见的行。这就是我们如何使用

df = pd.concat([df1, df2])
  
df = df.reset_index(drop=True)
  
df_group = df.groupby(list(df.columns))
  
idx = [x[0] for x in df_group.groups.values() if len(x) > 1]
df.reindex(idx)

输出:

Pandas - 查找两个数据帧之间的差异

寻找两个数据框架之间不常见的行

我们已经看到,我们如何在两个数据框架之间获得共同的行。现在,对于不常见的行,我们可以使用带参数drop_duplicate的concat函数。

示例:

pd.concat([df1,df2]).drop_duplicates(keep=False)

输出:

Pandas - 查找两个数据帧之间的差异

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程