📅  最后修改于: 2023-12-03 15:24:44.279000             🧑  作者: Mango
Pandas是一个数据分析库,它允许您轻松处理和操作数据。其中,对多个列应用函数是一项强大的功能。
你可以使用 apply()
来对数据框中的多个列应用一个函数,只需指定列名称即可。以下是一个示例:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
def my_func(x):
return x * 2
df[['A', 'B']] = df[['A', 'B']].apply(my_func)
在这个示例中,我们定义了一个简单的函数 my_func(x)
,它将输入参数乘以2。然后我们使用 apply()
将 my_func()
应用于数据框中的列 'A' 和 'B'。注意,我们还必须将应用的结果重新赋值给这些列才能将修改保存到数据框中。
对于不同的列数据类型,您可以指定不同的函数,如下所示:
import pandas as pd
data = {'A': [1, 2, 3], 'B': ['four', 'five', 'six'], 'C': [7.0, 8.0, 9.0]}
df = pd.DataFrame(data)
def my_func1(x):
return x * 2
def my_func2(x):
return x.upper()
df[['A', 'C']] = df[['A', 'C']].apply(my_func1)
df['B'] = df['B'].apply(my_func2)
在这个示例中,我们重新定义了一个新的函数 my_func2(x)
,它将字符串转换为大写。同样,我们使用 apply()
将 my_func1()
和 my_func2()
分别应用于数据框中的整数列和字符串列。注意,我们并没有对浮点数列进行任何操作,因为它们不是我们定义函数的目标类型。
有时候您可能需要对多个列应用一个函数,并根据需要使用其他参数,如下所示:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
def my_func(x, y, z):
return (x + y) * z
df['D'] = df.apply(lambda row: my_func(row['A'], row['B'], 2), axis=1)
在这个示例中,我们定义了一个新的函数 my_func(x,y,z)
,它需要三个输入参数。然后,我们使用 apply()
和一个lambda函数来按行应用 my_func()
函数,使得每个行数据中的所有列都可供 my_func()
使用。注意,我们需要 axis=1
选项以保持按行应用。
在Pandas中,对多个列应用函数是一项非常实用的功能,可以使得数据处理变得更加高效和便捷。基于列名称、基于数据类型以及基于多个参数的应用,都可以通过 apply()
完成。如果您需要处理大量的数据,请注意使用numpy向量化运算等方法来优化代码,尽可能地减少循环。