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

  • Post category:Python

使用Pandas DataFrame的apply()方法可以帮助我们在一个DataFrame中使用自定义函数,其中函数可以返回单个或多个值,得到新的Series或DataFrame。本篇攻略将详细讲解如何使用Pandas apply()方法返回多列数据的完整流程,同时提供实例说明。

1. apply()函数概述

apply()函数是Pandas的核心函数之一。其主要作用是对DataFrame中的一列或多列应用一个函数,并返回新的DataFrame。其中apply()方法的参数可以是一个自定义的函数,也可以是lambda表达式,函数所返回的值可以是标量数据类型、Series、DataFrame类型。

实例说明:

import pandas as pd

def my_custom_function(x):
    return x * 2

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df['a_apply'] = df['a'].apply(my_custom_function)
df['b_apply'] = df['b'].apply(lambda x: x * 3)

print(df)

执行后,输出结果为:

   a  b  a_apply  b_apply
0  1  4        2       12
1  2  5        4       15
2  3  6        6       18

如上所示,通过apply()方法,我们分别对DataFrame的’a’和’b’列应用了两个不同的函数,生成新的’a_apply’和’b_apply’列。

2. 返回多列数据的实现

在实际使用中,我们可能有这样一种需求:同时返回多列数据,该如何实现呢?下面将通过代码演示给出具体操作。

实例说明:

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})

def my_custom_function(x):
    result = pd.Series([x * 2, x * 3], index=['apply_1', 'apply_2'])
    return result

df[['apply_1', 'apply_2']] = df['c'].apply(my_custom_function)
print(df)

执行后,输出结果为:

   a  b  c  apply_1  apply_2
0  1  4  7       14       21
1  2  5  8       16       24
2  3  6  9       18       27

如上所示,我们定义了自定义的函数my_custom_function(),它接收一个参数x,生成一个包括两项的Series,然后将其返回。在apply()方法内部,我们使用df[[‘apply_1’, ‘apply_2’]]的形式将Series中的数据扩展进去。

3. 总结

通过本篇攻略的讲解,我们了解了Pandas DataFrame对象中apply函数的使用,并成功实现了返回多列数据的功能。apply函数是Pandas中非常重要的函数之一,它能帮助我们在DataFrame中使用自定义函数,将复杂的数据处理变得简单直观。