📜  pandas 将两列传递给函数 - Python (1)

📅  最后修改于: 2023-12-03 15:18:14.758000             🧑  作者: Mango

pandas 将两列传递给函数 - Python

在使用Python的数据分析库pandas时,我们经常需要对列数据进行操作和处理。有时候,我们希望将两列数据作为参数传递给一个函数,并得到一个新的结果列。本文将介绍如何使用pandas将两列传递给函数。

准备工作

首先,我们需要导入pandas库,并创建一个DataFrame对象来演示这个示例。

import pandas as pd

data = {
    'col1': [1, 2, 3, 4, 5],
    'col2': [10, 20, 30, 40, 50]
}

df = pd.DataFrame(data)

创建的DataFrame对象如下所示:

| col1 | col2 | |-------|------| | 1 | 10 | | 2 | 20 | | 3 | 30 | | 4 | 40 | | 5 | 50 |

使用apply方法

pandas的DataFrame对象提供了一个apply方法,该方法可以接收一个函数作为参数,并将该函数应用在每一行或每一列上。

如果我们想将col1col2相加,并将结果存储在一个新的列col3中,可以这样做:

def add_columns(row):
    return row['col1'] + row['col2']

df['col3'] = df.apply(add_columns, axis=1)

结果DataFrame对象如下所示:

| col1 | col2 | col3 | |-------|------|------| | 1 | 10 | 11 | | 2 | 20 | 22 | | 3 | 30 | 33 | | 4 | 40 | 44 | | 5 | 50 | 55 |

在上面的例子中,我们定义了一个名为add_columns的函数,它接收一个参数row,该参数代表DataFrame对象的每一行数据。函数返回col1col2的和。然后,我们使用apply方法将这个函数应用在DataFrame的每一行上,并将结果存储在col3列中。

需要注意的是,apply方法的axis参数需要设置为1,表示按行应用函数。

使用lambda函数

我们还可以使用lambda函数来实现同样的效果,lambda函数是一种匿名函数,可以在一行代码中定义函数。

df['col3'] = df.apply(lambda row: row['col1'] + row['col2'], axis=1)

上面的代码与之前的例子等效,使用lambda函数可以简化代码。

结论

通过使用pandas的apply方法,我们可以将两列数据传递给一个函数,并将结果存储在新的列中。这在对列数据进行操作和转换时非常有用,帮助我们实现更复杂的数据处理和分析任务。