📜  如何比较 Pandas 中的两列?

📅  最后修改于: 2022-05-13 01:54:34.627000             🧑  作者: Mango

如何比较 Pandas 中的两列?

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

当我们想要比较它们之间的值或者我们想知道它们之间的相似性时,比较列是非常必要的。例如,如果我们取两列,并且我们想找出哪一列大于或小于另一列,或者还想找出它们之间的相似性,那么比较列是我们可能需要做的合适的事情。 pandas 和 NumPy 中有很多种方法可以比较它们之间的值,我们将在本文中看到所有方法和实现。

方法 1:使用 np.where() 方法。

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

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

Python3
# 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)


Python3
# 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


Python3
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)


输出:

np.Where()

方法 2:使用 equals() 方法。

此方法测试两列是否包含相同的元素。此函数允许将两个 Series 或 DataFrame 相互比较,以查看它们是否具有相同的形状和元素。同一位置的 NaN 被认为是相等的。

在下面的代码中,我们遵循相同的过程,即导入库和创建数据框。在此数据框中,我添加了一个等于“column2”的新列,以显示该方法在此数据框中的作用。

Python3

# 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 的数据框系列中应用相同的函数。这种方法节省了我们的时间和代码。

在下面的代码中,我们重复相同的过程在 pandas 中创建一个数据框。通过使用 apply() 方法,我们正在使用 lambda 在 apply() 本身中创建一个临时匿名函数。它检查“column1”是否小于“column2”和“column1”是否小于“column3”。如果为 True,它将给出 'column1' 值。如果为 False,它将打印 NaN。这些值存储在 New 列中。因此,我们比较了列。

Python3

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)

输出:

申请()