如何在Pandas中把一个函数应用于多个列

如何在Pandas中把一个函数应用于多个列

Pandas.apply允许用户传递一个函数并将其应用于Pandas系列的每一个值。

pandas.DataFrame.apply的语法

语法 : DataFrame.apply(parameters)

参数 :

  • func :应用于每一列或每一行的函数。
  • axis:应用该函数的axis
  • raw : 决定行或列是作为系列还是ndarray对象传递。
  • result_type : ‘expand’, ‘reduce’, ‘broadcast’, None; 默认 None
  • args :除了数组/系列之外,要传递给func的位置参数。
  • kwds : 额外的关键字参数,作为关键字参数传递给func。

返回:系列或数据框架

例1:Pandas将函数应用于单列

在这个例子中,我们只传递了一个单列,并且用2来递增年龄。

# import the module
import pandas as pd
 
# creating a DataFrame
df = pd.DataFrame({'String 1': ['Tom', 'Nick', 'Krish', 'Jack'],
                   'Age': [32, 24, 33, 21]})
 
# function for prepending 'Geek'
def prepend_geek(age):
    return age + 2
 
# executing the function
df[["Age"]] = df[["Age"]].apply(prepend_geek)
 
# displaying the DataFrame
display(df)

输出:

如何在Pandas中把一个函数应用于多个列?

例子2 :Pandas将函数应用于多个列

在这里,我们使用Python串联法将一个函数应用于Pandas Dataframe的两列。

# import the module
import pandas as pd
 
# creating a DataFrame
df = pd.DataFrame({'String 1' :['Tom', 'Nick', 'Krish', 'Jack'],
                   'String 2' :['Jane', 'John', 'Doe', 'Mohan']})
 
# function for prepending 'Geek'
def prepend_geek(name):
    return 'Geek ' + name
 
# executing the function
df[["String 1", "String 2"]] = df[["String 1",
                                   "String 2"]].apply(prepend_geek)
 
# displaying the DataFrame
display(df)

输出 :

如何在Pandas中把一个函数应用于多个列?

例子3:Pandas对所有列应用函数

在这里,我们通过调用multiply_by_2函数将所有列都乘以2。

# import the module
import pandas as pd
 
# creating a DataFrame
df = pd.DataFrame({'Integers' :[1, 2, 3, 4, 5],
                   'Float' :[1.1, 2.2, 3.3, 4.4 ,5.5],
                  "Even_no":[2, 4, 6, 8, 10]})
 
# function for prepending 'Geek'
def multiply_by_2(number):
    return 2 * number
 
# executing the function
df = df.apply(multiply_by_2)
 
# displaying the DataFrame
display(df)

输出 :

如何在Pandas中把一个函数应用于多个列?

例子4:使用Numpy对单列进行Pandas应用函数

在这个例子中,我们只将panda的apply函数应用于一个单列,即整数,并使用numpy.square将其变为平方。

# import the module
import pandas as pd
import numpy as np
 
# creating a DataFrame
df = pd.DataFrame({'Integers' :[1, 2, 3, 4, 5],
                   'Float' :[1.1, 2.2, 3.3, 4.4 ,5.5],
                  "Even_no":[2, 4, 6, 8, 10]})
 
# executing the function
df["Integers"] = df["Integers"].apply(np.square)
 
# displaying the DataFrame
display(df)

如何在Pandas中把一个函数应用于多个列?

例子5:Pandas使用lambda对所有列应用函数

在这个例子中,我们将panda的apply函数应用于所有列,并使用Python lambda将所有列与5相加。

# import the module
import pandas as pd
 
# creating a DataFrame
df = pd.DataFrame({'Integers' :[1, 2, 3, 4, 5],
                   'Float' :[1.1, 2.2, 3.3, 4.4 ,5.5],
                  "Even_no":[2, 4, 6, 8, 10]})
 
# executing the function
df = df.apply(lambda x: x+5)
 
# displaying the DataFrame
display(df)

如何在Pandas中把一个函数应用于多个列?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程