📜  使用 Pandas apply() 方法返回多列(1)

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

使用 Pandas apply() 方法返回多列

Pandas 是一个流行的 Python数据分析库,可以用于数据清理、转换和分析。其中,apply() 方法是一种非常常用且有用的函数,在 Pandas 库中经常被用于数据变换中。

apply() 方法可以让我们对 Pandas DataFrame 中的数据进行自定义操作。 本文将介绍如何使用 Pandas apply() 方法来返回多列数据。

什么是 apply() 方法?

apply() 方法是一个 Pandas 中的函数,它可以让我们对 DataFrame 的每一行或每一列执行自定义的操作。这样就可以根据业务逻辑,将某些列中的数据合并、计算、拆分或其他操作,得到新的数据,从而简化数据操作的流程。

如何使用 apply() 方法返回多列?

要使用 apply() 方法返回多列数据,我们可以通过在 apply() 方法中传入一个函数来实现。该函数应该返回一个 Series 或 DataFrame 对象,其中 Series 对象就代表了新数据的一列,而 DataFrame 对象则代表了多列的新数据。

下面是一个示例,展示如何使用 apply() 方法返回多列:

import pandas as pd

# 创建一个 Pandas DataFrame
data = {'name': ['Peter', 'John', 'Mike', 'Lucas'],
    'age': [25, 30, 40, 35],
    'score1': [80, 70, 90, 85],
    'score2': [85, 75, 95, 90]}

df = pd.DataFrame(data)

# 自定义函数
def get_scores(df):
    """计算平均分和最高分"""
    df['avg_score'] = (df['score1'] + df['score2']) / 2.0
    df['max_score'] = df[['score1', 'score2']].max(axis=1)
    return df[['avg_score', 'max_score']]

# 使用 apply() 方法返回多列数据
new_df = df.apply(get_scores, axis=1)

print(new_df)

输出结果:

   avg_score  max_score
0       82.5         85
1       72.5         75
2       92.5         95
3       87.5         90

在上面的示例中,我们首先创建了一个 DataFrame 对象,并定义了一个用于计算平均分和最高分的自定义函数 get_scores()。然后,我们将该函数作为参数传递给 apply() 方法,并指定 axis=1,以便在每行上运行该函数。

在 get_scores() 函数中,我们使用 score1 和 score2 列的数据计算平均分和最高分,然后把它们封装在一个新的 DataFrame 对象中,最后返回该对象的两列数据。apply() 方法会处理每行的数据,然后合并新的 DataFrame 对象返回。

通过上面的例子,我们可以看到如何使用 Pandas apply() 方法来返回多列数据。当你需要根据数据进行自定义操作并生成多列新数据时,可以使用 apply() 方法来解决问题。