Pandas DataFrame transform()方法在其自身上调用该函数,产生一个带有转换值的DataFrame,其轴长与初始DataFrame相同。 transform()函数在你想要操作行或列时超级有用。
Pandas数据框架转换
Pandas数据框架transform()是一个内置的方法,它可以调用一个函数在自己身上产生一个具有转换值的数据框架 ,并且具有与自己相同的轴长。transform是一个与groupby方法结合使用的操作(这是pandas中最有用的操作之一)。
几乎,pandas用户很可能已经使用了聚合、过滤或apply与groupby来总结数据。然而,transform()方法在理解上有一定的难度,尤其是来自Excel世界的用户。
要在Python中导入和读取excel文件,可以使用Pandas的read_excel()方法。read_excel()函数是将excel表的数据读入DataFrame对象。它以二维表格的形式表示。
Pandas Transform vs. Pandas Aggregate
聚合必须返回数据的缩小版本,而转换可以返回完整数据的一些转换版本来重新组合。
对于这样的转换,输出是与输入相同的形状。常见的例子是通过减去组间平均值来使数据居中。
应用和转换函数之间的区别
apply()函数发送了一个完整的DataFrame副本,以便我们可以同时操作所有的行或列。
transform()函数根据轴值操作单一的行或列,而不是操作整个DataFrame。因此,我们可以根据需求使用apply()或transform()函数。
让我们看看df.transform()方法的语法。
语法
DataFrame.transform(func, axis=0, *args, **kwargs)
参数
它有四个参数,简要定义如下:
- 函数:它是函数、字符串、列表或字典。它是用于转换数据的函数。
- 轴:它可以是0或1。如果是0(也叫'索引'),他们的函数就应用于每一列。如果是1(也称为 "列"),那么函数将应用于每一行。
- args:这是传递给函数的位置参数。
- kwargs: 是传递给函数的关键字参数。
返回值
transform()函数返回一个转换后的DataFrame。
关于pandas.DataFrame.transform()的示例程序
写一个程序来展示pandas.DataFrame.transform()的工作
import pandas as pd
df = pd.DataFrame({"A": [3, 4, 5, 6, 7],
"B": [8, 9, 10, 11, 12],
"C": [13, 64, 74, 23, 76],
"D": [53, 35, 64, 76, 85]})
print(df)
resultdf = df.transform(func=lambda x: x + 2)
print("\nDataFrame after being transformed:\n")
print("\n", resultdf)
输出
A B C D
0 3 8 13 53
1 4 9 64 35
2 5 10 74 64
3 6 11 23 76
4 7 12 76 85
DataFrame after being transformed:
A B C D
0 5 10 15 55
1 6 11 66 37
2 7 12 76 66
3 8 13 25 78
4 9 14 78 87
在上面的代码中,我们看到我们已经创建了一个DataFrame,然后 通过在DataFrame的每个元素上加2来转换DataFrame ,并打印出转换后的DataFrame。
写一个程序,将DataFrame的每个元素乘以5,然后打印出结果的DataFrame
请看下面的代码:
import pandas as pd
df = pd.DataFrame({"A": [3, 4, 5, 6, 7],
"B": [8, 9, 10, 11, 12],
"C": [13, 64, 74, 23, 76],
"D": [53, 35, 64, 76, 85]})
print(df)
resultdf = df.transform(func=lambda x: x*5)
print("\nDataFrame after being transformed:\n")
print("\n", resultdf)
输出
A B C D
0 3 8 13 53
1 4 9 64 35
2 5 10 74 64
3 6 11 23 76
4 7 12 76 85
DataFrame after being transformed:
A B C D
0 15 40 65 265
1 20 45 320 175
2 25 50 370 320
3 30 55 115 380
4 35 60 380 425
在上面的例子中,我们看到我们已经创建了一个DataFrame,然后通过将 DataFrame的每个元素乘以5 来转换DataFrame ,并打印出转换后的DataFrame。
Pandas DataFrame和Numpy
让我们从一个Numpy数组中创建一个DataFrame,并使用transform()函数:
import pandas as pd
import numpy as np
df = pd.DataFrame(
np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
print(df)
resultdf = df.transform(func=lambda x: x*5)
print("\nDataFrame after being transformed:\n")
print("\n", resultdf)
输出
a b c
0 1 2 3
1 4 5 6
2 7 8 9
DataFrame after being transformed:
a b c
0 5 10 15
1 20 25 30
2 35 40 45
总结
DataFrame.transform()函数在应用其参数中指定的函数后,返回带有转换值的自生产的DataFrame。这个输出的DataFrame与传递的DataFrame具有相同的长度。