Pandas:如何一起使用 apply 和 lambda


您可以使用以下基本语法将 lambda 函数应用于 pandas DataFrame:

 df[' col '] = df[' col ']. apply ( lambda x: ' value1 ' if x < 20 else ' value2 ')

以下示例展示了如何在实践中通过以下 pandas DataFrame 使用此语法:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print (df)

  team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4

示例 1:使用 Apply 和 Lambda 创建新列

以下代码展示了如何使用applylambda创建一个新列,其值取决于现有列的值:

 #create new column called 'status'
df[' status '] = df[' points ']. apply ( lambda x: ' Bad ' if x < 20 else ' Good ')

#view updated DataFrame
print (df)

  team points assists status
0 A 18 5 Bad
1 B 22 7 Good
2 C 19 7 Bad
3 D 14 9 Bad
4 E 14 12 Bad
5 F 11 9 Bad
6 G 20 9 Good
7:28 4 Good

在此示例中,我们创建了一个名为status的新列,它采用以下值:

  • 如果点数列中的值小于 20,则为“”。
  • 如果点数列中的值大于或等于 20,则为“”。

示例 2:使用 Apply 和 Lambda 修改现有列

以下代码显示如何使用applylambda修改 DataFrame 中的现有列:

 #modify existing 'points' column
df[' points '] = df[' points ']. apply ( lambda x: x/2 if x < 20 else x*2)

#view updated DataFrame
print (df)

  team points assists
0 to 9.0 5
1 B 44.0 7
2 C 9.5 7
3D 7.0 9
4 E 7.0 12
5 F 5.5 9
6 G 40.0 9
7 A.M. 56.0 4

在此示例中,我们在 lambda 函数中使用以下规则修改现有列的值:

  • 如果该值小于 20,则将该值除以 2。
  • 如果该值大于或等于 20,则将该值乘以 2。

使用这个 lambda 函数,我们能够修改现有列的值。

其他资源

以下教程解释了如何在 pandas 中执行其他常见功能:

如何将函数应用于 Pandas Groupby
如何用 Pandas 中另一列的值填充 NaN

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注