Pandas:如何检查多列是否相等


您可以使用以下方法来检查 pandas 中的多列是否相等:

方法一:检查所有列是否相等

 df[' matching '] = df. eq (df. iloc [:, 0], axis= 0 ). all (1)

方法2:检查特定列是否相等

 df[' matching '] = df. apply ( lambda x: x.col1 == x.col3 == x.col4 , axis= 1 )

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' A ': [4, 0, 3, 3, 6, 8, 7],
                   ' B ': [4, 2, 3, 5, 6, 4, 7],
                   ' C ': [4, 0, 3, 3, 5, 10, 7],
                   ' D ': [4, 0, 3, 3, 3, 8, 7]})

#view DataFrame
print (df)

   ABCD
0 4 4 4 4
1 0 2 0 0
2 3 3 3 3
3 3 5 3 3
4 6 6 5 3
5 8 4 10 8
6 7 7 7 7

示例 1:检查所有列是否相等

我们可以使用以下语法来检查 DataFrame 中每列的值对于每行是否相等:

 #create new column that checks if all columns match in each row
df[' matching '] = df. eq (df. iloc [:, 0], axis= 0 ). all (1)

#view updated DataFrame
print (df)

   ABCD matching
0 4 4 4 4 True
1 0 2 0 0 False
2 3 3 3 3 True
3 3 5 3 3 False
4 6 6 5 3 False
5 8 4 10 8 False
6 7 7 7 7 True

如果每列的值相等,则相应的列返回True

否则,它返回False

请注意,您可以使用astype(int)TrueFalse值转换为10 ,如下所示:

 #create new column that checks if all columns match in each row
df[' matching '] = df. eq (df. iloc [:, 0], axis= 0 ). all (1). astype (int)

#view updated DataFrame
print (df)

   ABCD matching
0 4 4 4 4 1
1 0 2 0 0 0
2 3 3 3 3 1
3 3 5 3 3 0
4 6 6 5 3 0
5 8 4 10 8 0
6 7 7 7 7 1

示例 2:检查特定列是否相等

我们可以使用以下语法来检查 DataFrame 的 A、C 和 D 列中每行的值是否相等:

 #create new column that checks if values in columns A, C, and D are equal
df[' matching '] = df. apply ( lambda x: x. A == x. C == x. D , axis= 1 )

#view updated DataFrame
print (df)

   ABCD matching
0 4 4 4 4 True
1 0 2 0 0 True
2 3 3 3 3 True
3 3 5 3 3 True
4 6 6 5 3 False
5 8 4 10 8 False
6 7 7 7 7 True

如果 A、C 和 D 列中的值相等,则相应列返回True

否则,它返回False

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

如何重命名 Pandas 中的列
如何向 Pandas DataFrame 添加列
如何更改 Pandas DataFrame 中的列顺序

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注