Python pandas.DataFrame.transform函数方法的使用

pandas.DataFrame.transform 函数用于对DataFrame的每一列或行应用函数并返回一个新的DataFrame。它可以应用单个函数,也可以应用多个函数。本文主要介绍一下Pandas中pandas.DataFrame.aggregate方法的使用。

DataFrame.transform(func, axis=0, *args, **kwargs)源代码

调用func自己产生一个改变值的和自己的相同的轴长度的DataFrame

新版本0.20.0。

参数:

func : function, str, list 或 dict

用于转换数据的函数。如果是函数,则必须在传递DataFrame

或传递到DataFrame.apply时工作。

接受的组合是:

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

必须具有与自身相同长度的DataFrame

Raises:

ValueError : 如果返回的DataFrame的长度与自身不同。

例子

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

推荐阅读
cjavapy编程之路首页