Pandas DataFrame DataFrame.transform()函数
Minahil Noor
2023年1月30日
2020年11月7日
-
pandas.DataFrame.transform()
的语法 -
示例代码:
DataFrame.transform()
-
示例代码:
DataFrame.transform()
使用sqrt
字符串作为函数 -
示例代码:
DataFrame.transform()
传递函数列表 -
DataFrame.apply()
vsDataFrame.transform()
函数
Python Pandas DataFrame.transform()
在 DataFrame
上应用一个函数并转换 DataFrame
。要应用的函数作为参数传递给 transform()
函数。变换后的 DataFrame
的轴长度应该与原始 DataFrame
相同。
pandas.DataFrame.transform()
的语法
DataFrame.transform(func,
axis,
*args,
**kwargs)
参数
func |
它是应用于 DataFrame 的函数。它使 DataFrame 的值发生变化。它可以是一个函数,函数名字符串,函数或函数名列表,或轴标签的字典。 |
axis |
它是一个整数或字符串。它告诉目标轴的行或列。它可以是 0 或 index 代表行,1 或 columns 代表列。 |
*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()
函数在处理复杂的操作时更有效率。