【Pandas】pandas DataFrame transform

Pandas2.2 DataFrame

Function application, GroupBy & window

方法描述
DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数
DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数
DataFrame.applymap(func[, na_action])用于对 DataFrame 中的每一个元素应用一个函数
DataFrame.pipe(func, *args, **kwargs)用于实现链式编程风格的方法
DataFrame.agg([func, axis])用于对 DataFrame 的数据进行聚合操作
DataFrame.aggregate([func, axis])用于对 DataFrame 进行聚合操作的方法
DataFrame.transform(func[, axis])用于对 DataFrame 的列或行应用函数

pandas.DataFrame.transform()

pandas.DataFrame.transform 方法用于对 DataFrame 的列或行应用函数,返回与原数据形状相同或列扩展后的结果。以下为详细说明及示例:


语法
DataFrame.transform(func, axis=0)
  • func:函数、字符串、列表或字典。支持的函数需返回与原数据相同长度的序列。
  • axis:默认为 0(按列处理);1 表示按行处理。

示例
示例 1:应用单个函数(按列)

对每列元素减去列平均值:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
result = df.transform(lambda x: x - x.mean())
print(result)

输出:

   A  B
0 -1 -1
1  0  0
2  1  1

解释:列 A 的平均值为 2,列 B 的平均值为 5,每个元素减去对应列的平均值。


示例 2:使用字符串函数名

应用平方根函数 'sqrt'

result = df.transform('sqrt')
print(result)

输出:

          A         B
0  1.000000  2.000000
1  1.414214  2.236068
2  1.732051  2.449490

示例 3:传递函数列表

对每列应用多个函数,生成层次化列:

result = df.transform([np.sqrt, np.exp])
print(result)

输出:

        A                   B          
     sqrt        exp     sqrt        exp
0  1.000000   2.718282  2.000000   54.598150
1  1.414214   7.389056  2.236068  148.413159
2  1.732051  20.085537  2.449490  403.428793

解释:每列应用 sqrtexp 函数,生成多列结果。


示例 4:使用字典指定列函数

对列 A 应用平方根,列 B 应用加倍:

result = df.transform({'A': np.sqrt, 'B': lambda x: x * 2})
print(result)

输出:

          A   B
0  1.000000   8
1  1.414214  10
2  1.732051  12

示例 5:按行处理(axis=1

对每行元素进行归一化(元素减去行最小值):

result = df.transform(lambda x: x - x.min(), axis=1)
print(result)

输出:

   A  B
0  0  3
1  0  3
2  0  3

解释:每行的最小值分别为 1, 2, 3,各元素减去对应行的最小值。


示例 6:按行应用返回相同长度的函数

每行元素乘以该行的和:

result = df.transform(lambda x: x * x.sum(), axis=1)
print(result)

输出:

    A   B
0   5  20
1  14  35
2  27  54

解释:第一行和为 5,第二行为 7,第三行为 9,元素分别乘以对应行的和。


注意事项
  1. 形状一致性:函数必须返回与原数据相同长度的序列。例如,聚合函数(如 sum)直接使用会报错。
  2. 列扩展:传递函数列表或字典时,结果可能扩展列(层次化索引)。
  3. 行处理:当 axis=1 时,函数需处理行(Series),返回相同长度的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuweidong0802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值