📜  pandas 将函数应用于列 - Python (1)

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

Pandas将函数应用于列 - Python

在进行数据清洗和处理时,经常需要对数据进行转换和处理。这时候,Pandas的apply函数就显得非常有用了。Pandas的apply函数可以用于将任意函数应用于一个DataFrame中的每一行或每一列。

将函数应用到列

Pandas的apply函数可以用于将一个函数应用于DataFrame中的每一列。例如,我们可以编写一个函数将每个元素转换为其绝对值,然后将该函数应用于一列中的所有元素:

import pandas as pd

# 生成一个DataFrame
df = pd.DataFrame({
    'A': [-1, 2, -3, 4],
    'B': [5, -6, 7, -8],
    'C': [-9, -10, 11, 12]
})

# 定义一个函数,将每个元素转换为其绝对值
def abs_func(x):
    return abs(x)

# 将函数应用于df的每一列
df = df.apply(abs_func)

print(df)

输出结果为:

   A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

在此示例中,我们生成了一个DataFrame,并定义了一个将元素转换为其绝对值的函数。然后,我们使用apply函数将该函数应用于DataFrame中的每一列。

lambda表达式

除了使用常规函数外,我们还可以使用lambda表达式来传递函数。Lambda表达式是一种简短的函数定义方式,非常适用于在一行代码中定义简单的函数。

例如,我们可以将上面的代码修改为使用lambda表达式:

import pandas as pd

# 生成一个DataFrame
df = pd.DataFrame({
    'A': [-1, 2, -3, 4],
    'B': [5, -6, 7, -8],
    'C': [-9, -10, 11, 12]
})

# 将lambda表达式应用于df的每一列
df = df.apply(lambda x: abs(x))

print(df)

输出结果为:

   A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

在此示例中,我们使用lambda表达式来定义一个将元素转换为其绝对值的函数,并将其应用于DataFrame中的每一列。

将函数应用于列的特定行

有时,我们只需要将函数应用于列的特定行。我们可以利用Pandas的apply函数的args参数来实现这一目的。args参数接受一个包含函数参数的元组或字典作为输入。

例如,我们可以编写一个函数将每个元素转换为其绝对值,并将其应用于数据框中的第2行至第4行:

import pandas as pd

# 生成一个DataFrame
df = pd.DataFrame({
    'A': [-1, 2, -3, 4],
    'B': [5, -6, 7, -8],
    'C': [-9, -10, 11, 12]
})

# 定义一个函数,将每个元素转换为其绝对值
def abs_func(x):
    return abs(x)

# 将函数应用于df的第2行至第4行
df.iloc[1:4] = df.iloc[1:4].apply(abs_func, args=('A', 'B'))

print(df)

输出结果为:

   A  B   C
0 -1  5  -9
1  2  6  10
2  3  7  11
3  4  8  12

在此示例中,我们定义了一个将元素转换为其绝对值的函数,并使用Pandas的iloc函数选择DataFrame的第2行至第4行。然后,我们使用apply函数将该函数应用于所选行中的所有元素,并将args参数设置为包含要应用函数的列名的元组。

结论

在本文中,我们介绍了如何使用Pandas的apply函数将函数应用于DataFrame中的每一列。我们可以使用常规函数或lambda表达式来传递函数,还可以使用args参数将函数应用于列的特定行。Pandas的apply函数非常有用,并且可以在处理和清洗数据时提供很多便利。