我有一个销售数据集,我将其读入Pandas数据框架并转向组信息。现在列是一个Multiindex,看起来像这样:
MultiIndex([('Orders', 'Pants'),
('Orders', 'Shirts'),
('Orders', 'Shoes'),
( 'Spend', 'Pants'),
( 'Spend', 'Shirts'),
( 'Spend', 'Shoes'),,
names=[None, 'Product'])
现在,我正试图计算一个"平均订单值"。对于每个"产品"。我想这样做:
# Calculate Avg. Order Value by dividing Spend Series by Orders Series
dataframe['AOV'] = dataframe['Spend'] / dataframe['Orders']
但是我不能。我是如何得到这样一个数据框架的:
MultiIndex([('Orders', 'Pants'),
('Orders', 'Shirts'),
('Orders', 'Shoes'),
( 'Spend', 'Pants'),
( 'Spend', 'Shirts'),
( 'Spend', 'Shoes'),
( 'AOV', 'Pants'),
( 'AOV', 'Shirts'),
( 'AOV', 'Shoes'),
names=[None, 'Product'])
将Spend
除以Orders
,然后用keys
参数除concat
,在原始数据框上附加额外的索引级别AOV
,然后concat
,得到结果
AOV = pd.concat([df.loc['Spend'] / df.loc['Orders']], keys=['AOV'])
result = pd.concat([df, AOV])
或者你可以unstack
数据帧,然后分割和堆栈返回
s = df.unstack()
s.loc['AOV'] = s.loc['Spend'] / s.loc['Orders']
result = s.stack()