迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Pandas DataFrame DataFrame.transform()函数

作者:迹忆客 最近更新:2024/04/22 浏览次数:

Python Pandas DataFrame.transform() 在 DataFrame 上应用一个函数并转换 DataFrame。要应用的函数作为参数传递给 transform() 函数。变换后的 DataFrame 的轴长度应该与原始 DataFrame 相同。


pandas.DataFrame.transform() 的语法

DataFrame.transform(func, axis, *args, **kwargs)

参数

func 它是应用于 DataFrame 的函数。它使 DataFrame 的值发生变化。它可以是一个函数,函数名字符串,函数或函数名列表,或轴标签的字典。
axis 它是一个整数或字符串。它告诉目标轴的行或列。它可以是 0index 代表行,1columns 代表列。
*args 这些是要传递给函数的位置参数
**kwargs 这些是传递给函数的附加关键字参数

返回值

它返回一个转换后的 DataFrame,其长度与原始 “DataFrame “相同。如果返回的 DataFrame 具有不等长的长度,那么函数会引发 ValueError


示例代码:DataFrame.transform()

我们先试试这个函数,在 DataFrame 的每个值上加一个数字。

import pandas as pd

dataframe = pd.DataFrame({
                            'A': 
                                {0: 6, 
                                1: 20, 
                                2: 80,
                                3: 78,
                                4: 95}, 
                            'B': 
                                {0: 60, 
                                1: 50, 
                                2: 7,
                                3: 67,
                                4: 54}
                        })

print(dataframe)

示例 DataFrame 是:

    A   B
0   6  60
1  20  50
2  80   7
3  78  67
4  95  54
5  98  34

这个函数只有一个必须的参数,即 func。现在,我们将使用这个函数在 DataFrame 的每个值上加 20。

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func=lambda x: x + 20)
print(dataframe1)

输出:

     A   B
0   26  80
1   40  70
2  100  27
3   98  87
4  115  74
5  118  54

lambda 关键字用于声明一个匿名的加法函数。


示例代码:DataFrame.transform() 使用 sqrt 字符串作为函数

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func="sqrt")
print(dataframe1)

输出:

          A         B
0  2.449490  7.745967
1  4.472136  7.071068
2  8.944272  2.645751
3  8.831761  8.185353
4  9.746794  7.348469
5  9.899495  5.830952

在这里,我们没有传递 lambda 函数,而是将函数名作为字符串传递。


示例代码:DataFrame.transform() 传递函数列表

import pandas as pd

dataframe = pd.DataFrame(
    {"A": {0: 6, 1: 20, 2: 80, 3: 78, 4: 95}, "B": {0: 60, 1: 50, 2: 7, 3: 67, 4: 54}}
)

dataframe1 = dataframe.transform(func=["sqrt", "exp"])
print(dataframe1)

输出:

          A                       B              
       sqrt           exp      sqrt           exp
0  2.449490  4.034288e+02  7.745967  1.142007e+26
1  4.472136  4.851652e+08  7.071068  5.184706e+21
2  8.944272  5.540622e+34  2.645751  1.096633e+03
3  8.831761  7.498417e+33  8.185353  1.252363e+29
4  9.746794  1.811239e+41  7.348469  2.830753e+23

我们传递了一个由两个函数名组成的 “list”,即 ['sqrt', 'exp'] 作为 func。返回的 DataFrame 包含了两个额外的列,因为有一个额外的函数。


DataFrame.apply() vs DataFrame.transform() 函数

我们也可以使用 DataFrame.apply() 函数来实现上述结果。但如果我们比较一下这两个函数,就会发现 DataFrame.transform() 函数在处理复杂的操作时更有效率。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

DataFrame 获取给定列的第一行

发布时间:2024/04/22 浏览次数:51 分类:Python

本教程介绍了如何在 Pandas DataFrame 中使用 Series.loc()和 Series.iloc()方法获取给定列的第一行。

Pandas 重命名多个列

发布时间:2024/04/22 浏览次数:186 分类:Python

本教程演示了如何使用 Pandas 重命名数据框中的多个列。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便