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