关键词

详解pandas.apply()(应用函数)函数使用方法

pandas.apply()是pandas中的一个方法,它可以在Series或DataFrame上执行一个函数,并将其应用于每个元素(或行/列)。它的作用是对数据进行一些自定义或特殊的操作。

基本语法:

在Series上使用apply()方法:

Series.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)

参数说明:

  • func:一个函数或可调用对象,它会应用于每个元素
  • axis:这里默认是0,表示对每一列应用该函数,1表示对每一行应用该函数
  • args:包含函数参数的元组,这些参数在函数中被引用
  • **kwds:其他关键字参数

在DataFrame上使用apply()方法:

DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)

参数说明与Series上使用apply()方法相同。

实例1

在处理学生成绩时,假设有一列“总分”,需要对其进行区间分组,将分值100-90分的赋值为“A”,80-89分的赋值为“B”,70-79分的赋值为“C”,60-69分的赋值为“D”,60分以下的赋值为“E”。这时就可以利用apply()方法,自己定义一个函数,将其应用于这一列数据中的每个元素,实现对这一列数据的处理。

代码如下:

import pandas as pd

# 生成示例数据
df = pd.DataFrame({'Name': ['小明', '小红', '小刚', '小李'], '总分': [89, 68, 78, 95]})

def grade(score):
    if score >= 90:
        return 'A'
    elif score >= 80:
        return 'B'
    elif score >= 70:
        return 'C'
    elif score >= 60:
        return 'D'
    else:
        return 'E'

df['Grade'] = df['总分'].apply(grade)

print(df)

输出结果:

  Name  总分 Grade
0   小明   89     B
1   小红   68     E
2   小刚   78     C
3   小李   95     A

实例2

在使用pandas处理数据时,经常需要将一些特殊类型的输入数据进行转换,如时间戳、特殊字符等。这时,利用apply()方法,自己定义一个函数,将其应用于数据中的每个元素,实现对数据的处理。

例如,对于一个包含若干个时间戳的Series,可以自定义一个函数,将其转换为日期(yyyy-mm-dd)格式。

代码如下:

import pandas as pd

# 生成示例数据
time_series = pd.Series(['20210501', '20210502', '20210503', '20210504'])

def date_format(s):
    year = s[:4]
    month = s[4:6]
    day = s[6:]
    return '-'.join([year, month, day])

time_series = time_series.apply(date_format)

print(time_series)

输出结果:

0    2021-05-01
1    2021-05-02
2    2021-05-03
3    2021-05-04
dtype: object

参考资料:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.apply.html, https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

本文链接:http://task.lmcjl.com/news/17660.html

展开阅读全文