在Pandas DataFrame中应用IF条件的5种方法

在本指南中,你将看到在 Pandas DataFrame中应用IF条件的5种不同方法。具体来说,你将看到Pandas DataFrame应用IF条件的方法:

  1. 一组数字
  2. 一组数字和 lambda
  3. 字符串
  4. 字符串和 Lambada
  5. 或条件
在 Pandas DataFrame中应用IF条件现在让我们回顾以下 5 个案例:(1) IF 条件 – 一组数字
Pandas DataFrame如何使用IF条件?假设你在 Python中创建了一个具有 10 个数字(从 1 到 10)的 DataFrame。然后,你要应用以下 IF 条件:
  • 如果数字等于或小于 4,则赋值为 'True'
  • 否则,如果数字大于4,则赋值为 'False'
这是你可以用来创建 IF 条件的一般结构:
df.loc[ df[ 'column name'] condition, 'new column name'] = 'value if condition is met'

对于我们的Pandas DataFrame IF条件用法示例,Python 代码如下所示:
import pandas as pdnumbers = {'set_of_numbers': [ 1,2,3,4,5,6,7,8,9,10]} df = pd.DataFrame(numbers,columns=[ 'set_of_numbers'])df.loc[ df[ 'set_of_numbers'] < = 4, 'equal_or_lower_than_4?'] = 'True' df.loc[ df[ 'set_of_numbers'] > 4, 'equal_or_lower_than_4?'] = 'False' print (df)

这是你将在 Python 中得到的结果:
set_of_numbersequal_or_lower_than_4? 01True 12True 23True 34True 45False 56False 67False 78False 89False 910False

(2) IF 条件 – 一组数字和  lambda
你现在将看到如何通过使用Lambada获得与案例 1 相同的结果其中条件是:
  • 如果数字等于或小于 4,则赋值为 'True'
  • 否则,如果数字大于4,则赋值为 'False'
这是你可以在 Python 中应用的通用结构:
df[ 'new column name'] = df[ 'column name'].apply(lambda x: 'value if condition is met' if x condition else 'value if condition is not met')

对于我们的Pandas DataFrame IF条件用法示例:
import pandas as pdnumbers = {'set_of_numbers': [ 1,2,3,4,5,6,7,8,9,10]} df = pd.DataFrame(numbers,columns=[ 'set_of_numbers'])df[ 'equal_or_lower_than_4?'] = df[ 'set_of_numbers'].apply(lambda x: 'True' if x < = 4 else 'False')print (df)

这是你将得到的结果,与案例 1 匹配:
set_of_numbersequal_or_lower_than_4? 01True 12True 23True 34True 45False 56False 67False 78False 89False 910False

(3) IF 条件——字符串
现在,让我们创建一个仅包含具有 4 个  名称的字符串/文本的 DataFrame  :Jon、Bill、Maria 和 Emma。条件是:
  • 如果名称等于'Bill',则分配值 'Match'
  • 否则,如果名称不是  'Bill',则分配值 'Mismatch'
import pandas as pdnames = {'first_name': [ 'Jon','Bill','Maria','Emma']} df = pd.DataFrame(names,columns=[ 'first_name'])df.loc[ df[ 'first_name'] == 'Bill', 'name_match'] = 'Match' df.loc[ df[ 'first_name'] != 'Bill', 'name_match'] = 'Mismatch' print (df)

运行上述 Python 代码后,你将看到:
first_namename_match 0JonMismatch 1BillMatch 2MariaMismatch 3EmmaMismatch

(4) IF 条件——字符串和lambda 
Pandas DataFrame应用IF条件的方法:使用lambda,你将获得与情况 3 相同的结果
import pandas as pdnames = {'first_name': [ 'Jon','Bill','Maria','Emma']} df = pd.DataFrame(names,columns=[ 'first_name'])df[ 'name_match'] = df[ 'first_name'].apply(lambda x: 'Match' if x == 'Bill' else 'Mismatch')print (df)

这是 Python 的输出:
first_namename_match 0JonMismatch 1BillMatch 2MariaMismatch 3EmmaMismatch

(5) IF 条件与 OR
Pandas DataFrame如何使用IF条件?在最后一种情况下,让我们应用以下条件:
  • 如果名称是“Bill”  或“Emma”,则分配“Match”的值
  • 否则,如果名称既不是 'Bill' 也不是 'Emma',则赋值为 'Mismatch'
Pandas DataFrame IF条件用法示例如下:
import pandas as pdnames = {'first_name': [ 'Jon','Bill','Maria','Emma']} df = pd.DataFrame(names,columns=[ 'first_name'])df.loc[ (df[ 'first_name'] == 'Bill') | (df[ 'first_name'] == 'Emma'), 'name_match'] = 'Match' df.loc[ (df[ 'first_name'] != 'Bill') & (df[ 'first_name'] != 'Emma'), 'name_match'] = 'Mismatch'print (df)

运行 Python 代码,你将得到以下结果:
first_namename_match 0JonMismatch 1BillMatch 2MariaMismatch 3EmmaMatch

现有DataFrame 列下应用 IF 条件到目前为止,你已经了解了如何通过创建新列来应用 IF 条件。或者,你可以将结果存储在现有的DataFrame 列下。Pandas DataFrame应用IF条件的方法:例如,假设你创建了一个包含 12 个数字的 DataFrame,其中最后两个数字为零:'set_of_numbers': [1,2,3,4,5,6,7,8,9,10,  0  ,  0  ]然后,你可以应用以下 IF 条件,然后将结果存储在现有的“set_of_numbers”列下:
  • 如果数字等于 0,则将值更改为 999
  • 如果数字等于 5,则将值更改为 555
import pandas as pdnumbers = {'set_of_numbers': [ 1,2,3,4,5,6,7,8,9,10,0,0]} df = pd.DataFrame(numbers,columns=[ 'set_of_numbers']) print (df)df.loc[ df[ 'set_of_numbers'] == 0, 'set_of_numbers'] = 999 df.loc[ df[ 'set_of_numbers'] == 5, 'set_of_numbers'] = 555print (df)

以下是之前和之后的结果,在现有的“set_of_numbers”列下,“5”变为“555”,“0”变为“999”:前:
set_of_numbers 01 12 23 34 45 56 67 78 89 910 100 110

后:
set_of_numbers 01 12 23 34 4555 56 67 78 89 910 10999 11999

在另一个实例中,你可能有一个包含NaN 值的 DataFrame  。然后,你可以应用 IF 条件将这些值替换为 zeros,如下例所示:
import pandas as pd import numpy as npnumbers = {'set_of_numbers': [ 1,2,3,4,5,6,7,8,9,10,np.nan,np.nan]} df = pd.DataFrame(numbers,columns=[ 'set_of_numbers']) print (df)df.loc[ df[ 'set_of_numbers'].isnull(), 'set_of_numbers'] = 0 print (df)

在你看到 NaN 值之前,以及在你看到零值之后:前:
set_of_numbers 01.0 12.0 23.0 34.0 45.0 56.0 67.0 78.0 89.0 910.0 10NaN 11NaN

后:
set_of_numbers 01.0 12.0 23.0 34.0 45.0 56.0 67.0 78.0 89.0 910.0 100.0 110.0

结论Pandas DataFrame如何使用IF条件?你刚刚看到了如何在Pandas DataFrame中应用IF条件。在 Python 中确实有多种方法可以应用这样的条件。你可以通过使用Lambada 或仅坚持使用 Pandas来获得相同的结果。最后,它归结为使用最适合你需求的方法。最后,你可能需要查看以下外部资源以获取有关Pandas DataFrame 的其他信息。

    推荐阅读