pandas.apply()是pandas中的一个方法,它可以在Series或DataFrame上执行一个函数,并将其应用于每个元素(或行/列)。它的作用是对数据进行一些自定义或特殊的操作。
基本语法:
在Series上使用apply()方法:
Series.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)
参数说明:
在DataFrame上使用apply()方法:
DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)
参数说明与Series上使用apply()方法相同。
在处理学生成绩时,假设有一列“总分”,需要对其进行区间分组,将分值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
在使用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