对Pandas DataFrame列的条件性操作

对Pandas DataFrame列的条件性操作

假设你有一个网上商店。产品的价格经常更新。在计算产品的最终价格时,你要检查更新的价格是否可用。如果没有,你就使用最后的价格。

解决方案#1:我们可以使用条件表达式来检查该列是否存在。如果它不存在,我们就用另一列来计算价格。

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Updated Price':[1250, 1450, 1550, 400],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

现在我们将检查更新的价格是否可用。如果没有,那么我们将在 “最后价格 “栏中应用10%的折扣来计算最终价格。

# Check if the updated price is available or not
if 'Updated Price' in df.columns:
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
else :
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

正如我们在输出中所看到的,由于 “更新价格 “列是可用的,所以 “最终成本 “是根据更新价格计算的。

现在让我们考虑当 “更新价格 “不可用时的情况。

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

现在我们将检查更新的价格是否可用。如果没有,那么我们将在 “最后价格 “栏中应用10%的折扣来计算最终价格。

# Check if the updated price is available or not
if 'Updated Price' in df.columns:
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
else :
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

解决方案#2:我们可以使用Python的issubset()函数来检查所需的列是否存在于集合中。

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Updated Price':[1250, 1450, 1550, 400],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

现在我们将检查更新的价格是否可用。如果没有,那么我们将在 “最后价格 “栏中应用10%的折扣来计算最终价格。

# Check if the updated price is available or not
if {'Updated Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
elif {'Last Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作
正如我们在输出中所看到的,由于 “更新价格 “列是可用的,所以 “最终成本 “是根据更新价格计算的。

现在让我们考虑当 “更新价格 “不可用时的情况。

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作

现在我们将检查更新的价格是否可用。如果没有,那么我们将在 “最后价格 “栏中应用10%的折扣来计算最终价格。

# Check if the updated price is available or not
if {'Updated Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
elif {'Last Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

输出 :

对Pandas DataFrame列的条件性操作
我们可以在输出中看到,由于 “更新价格 “一栏不可用,所以 “最终成本 “是根据最后的价格计算的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程