比较 Pandas DataFrame 对象
本教程介绍了如何在 Python 中比较 Pandas DataFrame 对象。我们可以使用 ==
运算符来比较 DataFrame。
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2)
print("df_1:")
print(df_1)
print("")
print("df_2:")
print(df_2)
输出:
df_1:
Player Goals
0 Lewandowski 10
1 Haland 8
2 Ronaldo 6
3 Messi 5
4 Mbappe 4
df_2:
Player Goals
0 Lewandowski 7
1 Haland 8
2 Ronaldo 6
3 Messi 7
4 Mbappe 4
在本文中,我们将使用 DataFrame df_1
和 df_2
来演示 DataFrame 的比较。
使用 ==
运算符比较 Pandas 的 DataFrame 对象
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2)
print(df_1 == df_2)
输出:
Player Goals
0 True False
1 True True
2 True True
3 True False
4 True True
比较 df_1
和 df_2
的对应元素,如果该位置的对应元素相同,则返回 True
,否则返回 False
。
我们可以使用 pandas.DataFrame.all()
方法来知道 df_1
和 df_2
中哪些行是相同的。
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2)
print((df_1 == df_2).all(axis=1))
输出:
0 False
1 True
2 True
3 False
4 True
dtype: bool
在输出中,值为 True
的行与对应的元素值相同。因此,输出值为 False
的行与对应元素的值不同。
我们可以使用索引来列出所有在 df_1
和 df_2
中值不同的行。
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2)
print(df_1[(df_1 == df_2).all(axis=1) == False])
输出:
Player Goals
0 Lewandowski 10
3 Messi 5
它列出了 df_1
中所有的行,这些行的值与 df_2
中对应的行的值不同。
如果我们对 df_1
和 df_2
有不同的索引,我们会得到一个错误,说 ValueError: Can only compare identically-labeled DataFrame objects
。
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2, index=["a", "b", "c", "d", "e"])
print(df_1 == df_2)
输出:
Traceback (most recent call last):
...
ValueError: Can only compare identically-labeled DataFrame objects
我们可以使用 pandas.DataFrame.reset_index()
方法来重置索引,以克服上述问题。
import pandas as pd
data_season1 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [10, 8, 6, 5, 4],
}
data_season2 = {
"Player": ["Lewandowski", "Haland", "Ronaldo", "Messi", "Mbappe"],
"Goals": [7, 8, 6, 7, 4],
}
df_1 = pd.DataFrame(data_season1)
df_2 = pd.DataFrame(data_season2, index=["a", "b", "c", "d", "e"])
df_2.reset_index(drop=True, inplace=True)
print(df_1 == df_2)
输出:
Player Goals
0 True False
1 True True
2 True True
3 True False
4 True True
它在比较 df_1
和 df_2
之前重置了 df_2
的索引,这样两个 DataFrame 就有了相同的索引,使比较成为可能。
在比较它们之前,还必须确保在 DataFrame 中具有相同数量的行。
相关文章
将 NumPy 数组转换为 Pandas DataFrame
发布时间:2024/04/21 浏览次数:99 分类:Python
-
本教程介绍了如何使用 pandas.DataFrame()方法从 NumPy 数组生成 Pandas DataFrame。
Pandas 复制 DataFrame
发布时间:2024/04/21 浏览次数:117 分类:Python
-
本教程将介绍如何使用 DataFrame.copy()方法复制 DataFrame 对象,并探讨 DataFrame.copy()方法的使用。
Pandas DataFrame.loc[] 函数
发布时间:2024/04/21 浏览次数:177 分类:Python
-
DataFrame loc[]函数根据通过的输入来定位 DataFrame 的值。
Pandas DataFrame.isnull()和 notnull()函数
发布时间:2024/04/21 浏览次数:140 分类:Python
-
DataFrame isnull()函数检测对象的缺失值。DataFrame notnull()函数检测对象的非缺失值。
Pandas DataFrame.describe()函数
发布时间:2024/04/21 浏览次数:150 分类:Python
-
DataFrame describe()函数返回一个 DataFrame 的统计数据。
Pandas DataFrame.corr()函数
发布时间:2024/04/21 浏览次数:111 分类:Python
-
DataFrame corr()函数查找 DataFrame 各列之间的相关性。
Pandas DataFrame.astype()函数
发布时间:2024/04/21 浏览次数:112 分类:Python
-
DataFrame astype()函数将对象的数据类型改变为指定的数据类型。
Pandas DataFrame.to_numeric()函数
发布时间:2024/04/21 浏览次数:177 分类:Python
-
DataFrame to_numeric()函数将通过的参数转换为数字类型。