Pandas DataFrame - transform() function
The Pandas DataFrame transform() function calls func on self and produce a DataFrame with transformed values.
Syntax
DataFrame.transform(func, axis=0)
Parameters
func |
Required. Specify function used for transforming the data. If a function, must either work when passed a DataFrame or when passed to DataFrame.apply. If func is both list-like and dict-like, dict-like behavior takes precedence. Accepted combinations are:
|
axis |
Optional. Specify axis on which the function need to be applied. Default is 0. If 0 or 'index': applies function to each column. If 1 or 'columns': applies function to each row. |
Return Value
Returns a DataFrame of same length as self with transformed values.
Exceptions
Returns ValueError, if the returned DataFrame has a different length than self.
Example: using transform() on whole DataFrame
In the example below, a DataFrame df is created. The transform() function is used to apply given function on this DataFrame.
import pandas as pd import numpy as np df = pd.DataFrame({ "Sample1": [1, 2, 3, 4, 5], "Sample2": [11, 12, 13, 14, 15]}, index= ["x1", "x2", "x3", "x4", "x5"] ) print("The DataFrame contains:") print(df) print("\ndf.transform(lambda x: x*10) returns:") print(df.transform(lambda x: x*10))
The output of the above code will be:
The DataFrame contains: Sample1 Sample2 x1 1 11 x2 2 12 x3 3 13 x4 4 14 x5 5 15 df.transform(lambda x: x*10) returns: Sample1 Sample2 x1 10 110 x2 20 120 x3 30 130 x4 40 140 x5 50 150
Example: using more operations on whole DataFrame
Multiple operations can be applied on a DataFrame at the same time. Like in the example below, two operations - 'sqrt' (square root) and 'cbrt' (cube root) are applied, each producing the DataFrame of same length.
import pandas as pd import numpy as np df = pd.DataFrame({ "Sample1": [1, 2, 3, 4, 5], "Sample2": [11, 12, 13, 14, 15]}, index= ["x1", "x2", "x3", "x4", "x5"] ) print("The DataFrame is:") print(df) print("\ndf.transform(['sqrt', 'cbrt']) returns:") print(df.transform(['sqrt', 'cbrt']))
The output of the above code will be:
The DataFrame is: Sample1 Sample2 x1 1 11 x2 2 12 x3 3 13 x4 4 14 x5 5 15 df.transform(['sqrt', 'cbrt']) returns: Sample1 Sample2 sqrt cbrt sqrt cbrt x1 1.000000 1.000000 3.316625 2.223980 x2 1.414214 1.259921 3.464102 2.289428 x3 1.732051 1.442250 3.605551 2.351335 x4 2.000000 1.587401 3.741657 2.410142 x5 2.236068 1.709976 3.872983 2.466212
Example: using transform() on selected columns
Instead of whole DataFrame, the transform() function can be applied on selected columns. Consider the following example.
import pandas as pd import numpy as np df = pd.DataFrame({ "Sample1": [1, 2, 3, 4, 5], "Sample2": [11, 12, 13, 14, 15], "Sample3": [21, 22, 23, 24, 25]}, index= ["x1", "x2", "x3", "x4", "x5"] ) print("The DataFrame contains:") print(df) #applying transform() on single column print("\ndf['Sample1'].transform('sqrt') returns:") print(df['Sample1'].transform('sqrt')) #applying transform() on multiple columns print("\ndf[['Sample1', 'Sample2']].transform('sqrt') returns:") print(df[['Sample1', 'Sample2']].transform('sqrt'))
The output of the above code will be:
The DataFrame contains: Sample1 Sample2 Sample3 x1 1 11 21 x2 2 12 22 x3 3 13 23 x4 4 14 24 x5 5 15 25 df['Sample1'].transform('sqrt') returns: x1 1.000000 x2 1.414214 x3 1.732051 x4 2.000000 x5 2.236068 Name: Sample1, dtype: float64 df[['Sample1', 'Sample2']].transform('sqrt') returns: Sample1 Sample2 x1 1.000000 3.316625 x2 1.414214 3.464102 x3 1.732051 3.605551 x4 2.000000 3.741657 x5 2.236068 3.872983
Example: using different operation on different column
It is possible to use different operation on different column. Consider the following example.
import pandas as pd import numpy as np df = pd.DataFrame({ "Sample1": [1, 2, 3, 4, 5], "Sample2": [11, 12, 13, 14, 15]}, index= ["x1", "x2", "x3", "x4", "x5"] ) print("The DataFrame contains:") print(df) #different operation on different columns print("\ndf.transform({'Sample1':'sqrt', 'Sample2':'log10'} returns:") print(df.transform({'Sample1':'sqrt', 'Sample2':'log10'}))
The output of the above code will be:
The DataFrame contains: Sample1 Sample2 x1 1 11 x2 2 12 x3 3 13 x4 4 14 x5 5 15 df.transform({'Sample1':'sqrt', 'Sample2':'log10'} returns: Sample1 Sample2 x1 1.000000 1.041393 x2 1.414214 1.079181 x3 1.732051 1.113943 x4 2.000000 1.146128 x5 2.236068 1.176091
❮ Pandas DataFrame - Functions