Pandas通过另一个数据框中的条目划分列的条目

时间:2014-04-20 09:19:42

标签: python pandas

我有2个数据框--A和B. A包含各个商店的每周销售数据,部门由关键Store_Dept_Date索引(例如2_12_2010-04-03),而B包含相应的消费者价格指数(CPI)对于给定的商店和日期索引为Store_Date例如2_2010-04-03

> A.columns  
> Out [ ] : Index([u'Store', u'Dept', u'Date', u'Weekly_Sales'], dtype='object')

> B.columns  
> Out [ ] : Index([u'Store', u'Date', u'CPI'], dtype='object')

我想通过将A的每一行除以B中给出的相应CPI值来规范化A中给出的每周销售额。

目前我正在尝试这个:

for ix,row in A.iterrows():
  f_index = str(row['Store']) + "_" + row['Date']
  A.ix[ix,'Weekly_Sales'] = row['Weekly_Sales']/ B.ix[f_index,'CPI']

A包含421570行。我的程序需要永远运行。什么是正确有效的方式?

1 个答案:

答案 0 :(得分:1)

DataFrames'即使复制数据,合并方法也应该更快。您可以设置标记copy=False以最大限度地减少不必要的复制。

如果A中的每个日期在B中都有一个日期,那么您可以这样做:

C = A.merge(B, on=['Store', 'Date'], copy=False)
C['Normalized_Sales'] = C.Weekly_Sales / C.CPI