检查pandas df中的列值是否在列表中

时间:2019-06-26 20:22:53

标签: python pandas

我已经初始化了一个包含以下值的列表:

list = ['Umbrella', 'Umbrella'].

我也有一个4列的数据框。我想启动一个条件IF / else语句,据此,如果列A的值在列表中,那么我希望它执行求和运算。

df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'], 
               'Product':['Umbrella', 'Umbrella', 'Badminton', 'Shuttle'], 
               'Last Price':[1200, 1500, 1600, 352], 
               'Updated Price':[1250, 1450, 1550, 400], 
               'Discount':[10, 10, 10, 10]}) 

'''' 但是,我尝试了以下代码,但是它不起作用:

if df['Product'].isin(list):
    Cumulative_Spend = df.groupby('Product')['Last Price'].sum()  
else:
    Calibrated = df.groupby('Product')['Last Price'].sum()

如果条件满足(在初始化的列表中),我想汇总每个项目的“最后价格”的总和,如果条件不满足,那么我要获取该项目的“最后价格”值并将其存储在另一个列表,称为“校准”。

1 个答案:

答案 0 :(得分:0)

您快到这里了,有两件事:您需要过滤而不是if,并且需要在第二个中用tail代替总和,这是这样的:

import pandas as pd

l = ['Umbrella', 'Umbrella']

df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'], 
           'Product':['Umbrella', 'Umbrella', 'Badminton', 'Shuttle'], 
           'Last Price':[1200, 1500, 1600, 352], 
           'Updated Price':[1250, 1450, 1550, 400], 
           'Discount':[10, 10, 10, 10]}) 

Cumulative_Spend = df[df['Product'].isin(l)].groupby('Product')['Last Price'].sum() 
Calibrated = df[~df['Product'].isin(l)].groupby('Product')['Last Price'].tail(1)