如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

参考:pandas apply lambda multiple columns

在数据分析和数据处理中,PandasPython 中一个非常强大的库,它提供了大量的功能来处理和分析数据。其中,apply 函数是 Pandas 中用于数据框(DataFrame)和序列(Series)的一种非常灵活的方法,它允许用户应用一个函数到 DataFrame 的行或列中。当结合 lambda 函数使用时,apply 可以非常方便地对多个列进行操作和处理。

本文将详细介绍如何在 Pandas 中使用 apply 函数结合 lambda 表达式来处理多个列,包括基本的使用方法和一些高级技巧。我们将通过多个示例代码来展示不同的用法。

基本用法

在 Pandas 中,apply 函数可以用于 DataFrame 的行或列,通过设置 axis 参数来决定。axis=0 表示函数应用于每一列,而 axis=1 表示函数应用于每一行。

示例代码 1:对两列使用 lambda 函数

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 apply 和 lambda 对两列求和
df['Sum'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 2:修改多列的数据

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [40, 50, 60],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 lambda 函数将两列的值增加 5
df[['A', 'B']] = df[['A', 'B']].apply(lambda x: x + 5)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 3:使用条件语句在 lambda 函数中

import pandas as pd

df = pd.DataFrame({
    'A': [100, 200, 300],
    'B': [400, 500, 600],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 apply 和 lambda 来创建一个新列,根据条件修改值
df['New Column'] = df.apply(lambda row: row['A'] + row['B'] if row['A'] > 150 else row['B'], axis=1)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

复杂操作

使用 apply 和 lambda 函数可以执行更复杂的数据操作,比如基于多个列的条件判断、数据转换等。

示例代码 4:基于多列条件创建新列

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 根据多列条件使用 lambda 函数创建新列
df['Flag'] = df.apply(lambda row: 'High' if row['A'] > 1 and row['B'] < 6 else 'Low', axis=1)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 5:对多个列应用同一函数

import pandas as pd

df = pd.DataFrame({
    'A': [10, 20, 30],
    'B': [40, 50, 60],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 对多个列应用同一 lambda 函数
df[['A', 'B']] = df[['A', 'B']].apply(lambda x: x ** 2)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 6:结合使用 apply 和其他 Pandas 函数

import pandas as pd

df = pd.DataFrame({
    'A': [100, 200, 300],
    'B': [400, 500, 600],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 apply 结合 max 函数
df['Max'] = df.apply(lambda row: max(row['A'], row['B']), axis=1)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

高级技巧

在处理更复杂的数据结构时,我们可以使用更高级的技巧来优化我们的代码。

示例代码 7:使用 apply 和 lambda 处理时间数据

import pandas as pd

df = pd.DataFrame({
    'Date': ['2021-01-01', '2021-01-02', '2021-01-03'],
    'Value': [1, 2, 3],
    'Website': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 将字符串日期转换为 datetime 对象
df['Date'] = pd.to_datetime(df['Date'])
df['Year'] = df['Date'].apply(lambda x: x.year)
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 8:结合多个 DataFrame 操作

import pandas as pd

df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

df2 = pd.DataFrame({
    'A': [7, 8, 9],
    'B': [10, 11, 12],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 合并 DataFrame 并应用 lambda 函数
df_combined = pd.concat([df1, df2])
df_combined['Sum'] = df_combined.apply(lambda row: row['A'] + row['B'], axis=1)
print(df_combined)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 9:使用 apply 和 lambda 进行错误处理

import pandas as pd

df = pd.DataFrame({
    'A': [1, 'two', 3],
    'B': [4, 5, 'six'],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 lambda 函数处理可能的转换错误
df['A'] = df['A'].apply(lambda x: pd.to_numeric(x, errors='coerce'))
df['B'] = df['B'].apply(lambda x: pd.to_numeric(x, errors='coerce'))
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

示例代码 10:结合 lambda 函数和其他库函数

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 NumPy 函数和 lambda 结合
df['Log_A'] = df['A'].apply(lambda x: np.log(x))
print(df)

Output:

如何在 Pandas 中使用apply函数结合 lambda 表达式来处理多个列

通过这些示例,我们可以看到 Pandas 的 apply 函数和 lambda 表达式在数据处理中的强大功能和灵活性。无论是简单的数据操作还是复杂的数据转换,apply 和 lambda 都能提供有效的解决方案。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程