📜  在 Pandas DataFrame 中应用 if 条件的方法

📅  最后修改于: 2022-05-13 01:55:27.748000             🧑  作者: Mango

在 Pandas DataFrame 中应用 if 条件的方法

通常在 Pandas DataFrame 上,if 条件可以按列、按行或基于单个单元格应用。进一步的文档通过示例说明了其中的每一个。

首先,我们将创建以下 DataFrame :

# importing pandas as pd
import pandas as pd
  
# create the DataFrame
df = pd.DataFrame({
    'Product': ['Umbrella', 'Matress', 'Badminton', 
                'Shuttle', 'Sofa', 'Football'],
    'MRP': [1200, 1500, 1600, 352, 5000, 500],
    'Discount': [0, 10, 0, 10, 20, 40]
})
  
# display the DataFrame
print(df)

输出 :

示例 1:列值(元组)的 if 条件:if 条件可以应用于列值,例如当有人要求 MRP <=2000 且折扣 >0 的所有项目时,以下代码会执行此操作。类似地,可以对 DataFrame 的任意数量的属性应用任意数量的条件。

# if condition with column conditions given
# the condition is if MRP of the product <= 2000 
# and discount > 0 show me those items
df[(df['MRP'] <= 2000) & (df['Discount'] > 0)]

输出 :

示例 2:如果行值(元组)的条件:这可以作为列值条件的特殊情况。如果给定一个元组 (Sofa, 5000, 20) 并在 DataFrame 中找到它,可以像这样完成:

# if condition with row tuple given
df[(df['Product'] == 'Sofa') & (df['MRP'] == 5000) & (df['Discount']== 20)]

输出 :

示例 3:使用 Lambda函数:Lambda函数接受输入并根据特定条件返回结果。它可用于对 Pandas DataFrame 中列的每个元素应用某个函数。下面的示例使用 Lambda函数将折扣值的上限设置为 20,即,如果任何单元格中的折扣值 > 20,它会将其设置为 20。

# importing pandas as pd 
import pandas as pd 
  
# Create the dataframe 
df = pd.DataFrame({
    'Product': ['Umbrella', 'Matress', 'Badminton', 
                'Shuttle', 'Sofa', 'Football'],
    'MRP': [1200, 1500, 1600, 352, 5000, 500],
    'Discount': [0, 10, 0, 10, 20, 40]
})
  
# Print the dataframe 
print(df) 
  
# If condition on column values using Lambda function 
df['Discount'] = df['Discount'].apply(lambda x : 20 if x > 20 else x)
print(df)

输出 :

示例 4:使用iloc()loc()函数: iloc()loc()函数都用于从 DataFrame 中提取子 DataFrame。子 DataFrame 可以是从单个单元格到整个表格的任何内容。 iloc()通常在我们知道行和列的索引范围时使用,而loc()用于标签搜索。

下面的示例显示了使用这两个函数在 Dataframe 上赋予条件。这里采用索引为 [2, 1] 的单元格,它是羽毛球产品的 MRP。

# If condition on a cell value using iloc() or loc() functions
# iloc() is based on index search and loc() based on label search
  
# using iloc()
if df.iloc[2, 1] > 1500:
  print("Badminton Price > 1500")
else:
  print("Badminton Price < 1500")
  
# using loc()
print(df.loc[2, 'MRP'])
if df.iloc[2, 'MRP'] > 1500:         
  print("Badminton Price > 1500")
else:
  print("Badminton Price < 1500")

输出 :