DataFrame.transform(func, axis=0, *args, **kwargs)源代码
调用func
自己产生一个改变值的和自己的相同的轴长度的DataFrame
新版本0.20.0。
参数: | func : 用于转换数据的函数。如果是函数,则必须在传递 或传递到 接受的组合是: function string function name list of functions 和/或 function names, 例如, [np.exp. 'sqrt'] axis labels的dict -> functions, function names 或这样的list. axis : {0 or ‘index’, 1 或 ‘columns’}, 默认 0 如果0或' index ':应用函数到每一列。 如果1或‘columns’:应用函数到每一行。 *args 要传递给func的位置参数。 **kwargs 要传递给func的关键字参数。 |
返回: | DataFrame 必须具有与自身相同长度的 |
Raises: | ValueError : 如果返回的 |
例子,
1)单个函数
import pandas as pd # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8] } df = pd.DataFrame(data) # 对DataFrame的每一列应用一个函数 transformed_df = df.transform(lambda x: x * 2) print(transformed_df)
2)多个函数
import pandas as pd # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8] } df = pd.DataFrame(data) # 对DataFrame的每一列应用多个函数 transformed_df = df.transform(['sqrt', 'exp']) print(transformed_df)
3)针对特定列应用不同函数
import pandas as pd # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8] } df = pd.DataFrame(data) # 针对特定列应用不同函数 transformed_df = df.transform({ 'A': 'sqrt', 'B': lambda x: x * 2 }) print(transformed_df)
4)使用示例
import pandas as pd import numpy as np # 创建一个示例DataFrame df = pd.DataFrame({'A': range(3), 'B': range(1, 4)}) print("原始 DataFrame:") print(df) # 输出: # A B # 0 0 1 # 1 1 2 # 2 2 3 # 对DataFrame的每一列应用一个函数,将每个元素加1 transformed_df = df.transform(lambda x: x + 1) print("\n应用 transform 函数后的 DataFrame:") print(transformed_df) # 输出: # A B # 0 1 2 # 1 2 3 # 2 3 4 # 创建一个示例Series s = pd.Series(range(3)) print("\n原始 Series:") print(s) # 输出: # 0 0 # 1 1 # 2 2 # dtype: int64 # 对Series应用多个函数 transformed_s = s.transform([np.sqrt, np.exp]) print("\n应用 transform 函数后的 Series:") print(transformed_s) # 输出: # sqrt exp # 0 0.000000 1.000000 # 1 1.000000 2.718282 # 2 1.414214 7.389056