pandas中的apply方法使用

news/2025/2/4 17:50:49 标签: pandas

apply 用于对 DataFrame 或 Series 中的数据进行逐行或逐列的操作。它可以接受一个函数(通常是 lambda 函数或自定义函数),并将该函数应用到每一行或每一列上。apply语法:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
  • func:要应用的函数。可以是lambda函数、自定义函数或内置函数。

  • axis

    默认是0,将函数应用到每一列

    axis = 1表示将函数应用到每一行

  • raw

    默认是False,将每一行或每一列作为 Series 传递给函数。

    raw = True,表示将每一行或每一列作为 NumPy 数组传递给函数。

对每一列应用函数

import pandas as pd

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

result = df.apply(sum)
print(result)
# A     6     
# B    15     
# dtype: int64

对每一行应用函数

import pandas as pd

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

result = df.apply(sum, axis=1)
print(result)
# 0    5      
# 1    7      
# 2    9      
# dtype: int64

使用lambda函数

import pandas as pd

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

# 对每一行计算 A 和 B 的乘积
result = df.apply(lambda row: row['A'] * row['B'], axis=1)
print(result)
# 0     4
# 1    10
# 2    18
# dtype: int64

使用自定义函数

import pandas as pd

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

# 自定义函数:计算 A 和 B 的平方和
def square_sum(row:pd.Series) -> int:
    return row['A'] ** 2 + row['B'] ** 2

# 对每一行应用自定义函数
result = df.apply(square_sum, axis=1)
print(result)
# 0    17
# 1    29
# 2    45
# dtype: int64

apply 是逐行或逐列操作的,因此在处理大规模数据时可能较慢。在处理大规模数据时,需注意性能问题,尽量使用向量化操作。

力扣上的pandas题:1873. 计算特殊奖金 - 力扣(LeetCode)

编写解决方案,计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 'M' 开头,那么他的奖金是他工资的 100% ,否则奖金为 0

解题思路就是使用apply方法。

import pandas as pd

def calculate_special_bonus(employees: pd.DataFrame) -> pd.DataFrame:
    employees['bonus'] = employees.apply(
        lambda x: x['salary'] if x['employee_id'] % 2 == 1 and not x['name'].startswith('M') else 0,
        axis = 1
    )
    return employees[['employee_id', 'bonus']].sort_values(by='employee_id')
    

http://www.niftyadmin.cn/n/5841711.html

相关文章

Java 大视界 -- Java 大数据在智能电网中的应用与发展趋势(71)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

深入剖析 Bitmap 数据结构:原理、应用与优化策略

深入理解 Bitmap 数据结构 一、引言 在计算机科学领域,数据的高效存储和快速处理一直是核心问题。随着数据量的不断增长,如何用最少的空间和最快的速度来表示和操作数据变得至关重要。Bitmap(位图)作为一种简洁而强大的数据结构…

golang命令大全8--跨平台构建

Go 语言以其强大的跨平台能力而著称,其内置的工具链使得构建适配不同平台的二进制可执行文件变得非常简单。在本章中,我们将详细讲解跨平台构建的基本概念、环境变量的配置方法、如何构建适配不同平台的二进制文件,以及相关的注意事项。 1、…

ES6 入门教程:箭头函数、解构赋值及其他新特性详解

ES6 入门教程:箭头函数、解构赋值及其他新特性详解 ES6 入门教程:箭头函数、解构赋值及其他新特性详解引言什么是 ES6?箭头函数(Arrow Functions)1. 基本语法2. 常见特点(1)没有自己的 this 上下…

【前端学习路线】前端优化 详细知识点学习路径(附学习资源)

📚学习资源: 前端开发:零基础入门到项目实战 >> 前端开发:边学边练 >> 原学习路径下载 >>

使用scikit-learn中的K均值包进行聚类分析

聚类是无监督学习中的一种重要技术,用于在没有标签信息的情况下对数据进行分析和组织。K均值算法是聚类中最常用的方法之一,其目标是将数据点划分为K个簇,使得每个簇内的数据点更加相似,而不同簇之间的数据点差异较大。 准备自定…

Java 网络原理 ③-NAT || DHCP

这里是Themberfue 上篇文章我们简单介绍了 IP 协议 的首部字段的含义,这节课我们将继续深入 IP 协议~~~ DHCP 上节课我们提到,IPv4 使用点分十进制的方式管理地址,但是 IPv4 最多分配43亿个地址,早在2019年,IPv4 的地…

https的原理

HTTPS 的原理 HTTPS(HyperText Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。它在 HTTP 的基础上增加了 SSL/TLS 协议,以实现数据传输的安全性和完整性。以下是 HTTPS 的基本原理: 1. 基本概念 HTTP…