我已经初始化了一个包含以下值的列表:
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()
如果条件满足(在初始化的列表中),我想汇总每个项目的“最后价格”的总和,如果条件不满足,那么我要获取该项目的“最后价格”值并将其存储在另一个列表,称为“校准”。
答案 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)