如何在Pandas中比较两列

如何在Pandas中比较两列

在这篇文章中,我们学习如何比较pandas的数据框架中的列。Pandas是Python中一个非常有用的库,它主要用于数据分析、可视化、数据清洗等方面。

当我们想比较它们之间的价值或想知道它们之间的相似性时,比较列是非常必要的。例如,如果我们有两列,而我们想找到哪一列大于或小于另一列,或者想找到它们之间的相似性,比较列是我们可能需要做的合适的事情。在pandas和NumPy中有许多类型的方法来比较它们之间的值,我们将在本文中看到所有的方法和实现。

方法一:使用np.where()方法

在这个方法中,条件被传递到这个方法中,如果条件为真,那么它将是我们给出的值(即语法中的’X’),如果它为假,那么,它将是我们给他们的值(即语法中的’y’)。

语法: numpy.where(condition[,x, y])

参数:

  • condition:当真时,产生x,否则产生y。
  • x, y :可供选择的数值。

在下面的代码中,我们正在导入必要的库,即pandas和NumPy。我们创建了一个字典,并给出了每一列的值。然后,它被转换为一个pandas数据框架。通过使用NumPy的Where()方法,我们得到了比较各列的条件。如果’column1’小于’column2’并且’column1’小于’column3’,我们就打印’column1’的值。如果条件失败,我们给出的值是’NaN’。这些结果被存储在数据框架的新列中。

# Importing Libraries
import pandas as pd
import numpy as np
 
# data's stored in dictionary
details = {
    'Column1': [1, 2, 30, 4],
    'Column2': [7, 4, 25, 9],
    'Column3': [3, 8, 10, 30]
}
 
# creating a Dataframe object
df = pd.DataFrame(details)
 
# Where method to compare the values
# The values were stored in the new column
df['new'] = np.where((df['Column1'] <= df['Column2']) & (
    df['Column1'] <= df['Column3']), df['Column1'], np.nan)
 
# printing the dataframe
print(df)

输出:

如何在Pandas中比较两列?

np.Where()

方法2:使用equals()方法

该方法测试两列是否包含相同的元素。这个函数允许两个系列或DataFrames相互比较,看它们是否有相同的形状和元素。相同位置的NaN被认为是相等的。

语法: DataFrame.equals(other)

参数: OtherSeries或DataFrame。要与第一个系列或数据框架进行比较的其他系列或数据框架。

返回值: bool,如果两个对象中的所有元素都相同,则为真,否则为假。

在下面的代码中,我们遵循同样的程序,即导入库并创建一个数据框架。在这个数据框架中,我添加了一个新的列,等于 “column2″,以显示该方法在这个数据框架中的作用。

# importing libraries
import pandas as pd
 
# Storing data in dictionary
details = {
    'Column1': [1, 2, 3, 4],
    'Column2': [7, 4, 25, 9],
    'Column3': [3, 8, 10, 30],
    'Column4': [7, 4, 25, 9],
}
 
# creating a Dataframe object
df = pd.DataFrame(details)
 
df['Column4'].equals(df['Column2'])  # Returns True
 
# df['Column1'].equals(df['Column2']) Returns False

输出:

True

方法3:使用Apply()方法

这个方法允许我们传递函数或条件,并得到在整个pandas的数据框架系列中应用相同的函数。这个方法为我们节省了时间和代码。

语法: DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)

在下面的代码中,我们正在重复同样的过程,在pandas中创建一个数据框架。通过使用apply()方法,我们在apply()中使用lambda创建了一个临时匿名函数。它检查’column1’是否小于’column2’,’column1’是否小于’column3’。如果是真,它将给出’column1’的值。如果它是假的,它将打印NaN。这些值被存储在新列中。因此,我们比较了这些列。

import pandas as pd
details = {
    'Column1': [1, 2, 3, 4],
    'Column2': [7, 4, 2, 9],
    'Column3': [3, 8, 10, 30],
}
 
# creating a Dataframe object
df = pd.DataFrame(details)
 
# apply function
df['New'] = df.apply(lambda x: x['Column1'] if x['Column1'] <=
                     x['Column2'] and x['Column1']
                     <= x['Column3'] else np.nan, axis=1)
 
# printing the dataframe
print(df)

输出:

如何在Pandas中比较两列?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程