Pandas 数据帧compare()方法

原文:https://www.studytonight.com/pandas/pandas-dataframe-compare-method

在本教程中,我们将学习 PandasDataFrame.compare()的方法。此方法将一个数据帧与另一个数据帧进行比较,并显示差异。它返回显示并排堆叠的差异的数据帧,结果索引将是一个多索引,其中‘self’‘other’交替堆叠在内层。当两个数据帧没有相同的标签或形状时,该函数抛出'ValueError'异常。

下图显示了DataFrame.compare()方法的语法。

句法

DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)

因素

其他:数据帧。对象进行比较。

align_axis: 如果是【0】表示【索引】,如果是【1】表示【列】,默认值为 1。它确定在哪个轴上对齐比较。

keep_shape: 表示 bool(真或假),默认值为 False。如果为真,则保留所有行和列。否则,只保留具有不同值的那些。

keep_equal: 表示 bool(真或假),默认值为 False。如果为真,结果将保持相等的值。否则,相等的值显示为 n as。

示例 1:使用DataFrame.compare()方法比较两个数据帧

我们可以比较两个数据帧,并使用DataFrame.compare()方法查看差异。下面的例子显示了同样的情况。

#importing pandas as pd
import pandas as pd
df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
df2 = pd.DataFrame([['Abhishek',100,'Maths',95], ['Anurag',101,'Maths',80]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
print(df1.compare(df2))

一旦我们运行该程序,我们将获得以下输出。

学科成绩 自我他人自我他人 0 科学数学 90 95 1 科学数学 85 80

示例 2:使用DataFrame.compare()方法和align_axis=0比较两个数据帧

align_axis=0 时,DataFrame.compare()方法返回垂直堆叠的数据帧,其中的行是从自己和他人交替绘制的。

#importing pandas as pd
import pandas as pd
df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
df2 = pd.DataFrame([['Abhishek',100,'Maths',95], ['Anurag',101,'Maths',75]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
print(df1.compare(df2,align_axis=0))

一旦我们运行该程序,我们将获得以下输出。

科目成绩 0 自我科学 90 其他数学 95 1 自我科学 85 其他数学 75

示例 3:使用DataFrame.compare()方法比较两个数据帧

下面的例子与上一个类似,更改数据帧中的一些元素,比较并检查差异。

#importing pandas as pd
import pandas as pd
df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
df2 = pd.DataFrame([['Abhishek',100,'Maths',95], ['Anurag',101,'Maths',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
print(df1.compare(df2,align_axis=0))

一旦我们运行该程序,我们将获得以下输出。

科目成绩 0 自我科学 90.0 其他数学 95.0 1 自我科学 NaN 其他数学 NaN

示例 4:使用DataFrame.compare()方法和keep_shape=True比较两个数据帧

如果keep_shape=True,将显示结果数据帧中的所有行和列。否则,只有具有不同值的数据才会显示在结果数据帧中。

#importing pandas as pd
import pandas as pd
df1 = pd.DataFrame([['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
df2 = pd.DataFrame([['Abhishek',100,'Maths',95], ['Anurag',101,'Maths',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'])
print(df1.compare(df2,keep_shape=True))

一旦我们运行该程序,我们将获得以下输出。

姓名卷无学科成绩 自我其他自我其他自我其他自我其他 0 NaN NaN NaN 理科数学 90.0 95.0 1 NaN NaN 理科数学 NaN NaN

结论

在本教程中,我们学习了 PandasDataFrame.compare()方法。我们学习了DataFrame.compare()方法的语法和参数。我们通过求解例子比较了两个数据帧,理解了DataFrame.compare()方法。