python或pandas中的嵌套vlookups

时间:2018-07-21 18:31:07

标签: python pandas merge jupyter

我有2个数据框,records_df和price_df,它们的索引相同

price_df:

index    product   price/product
 s1        a        34 
 s1        b        34 
 s1        c        23
 s2        a        12
 s2        b        14
 s2        c        65
 s3        a        33
 s3        b        65
 s3        c        54

records_df:

index    Name   Number  Product     Sum of Amount of Products Day
  s1      x      1234     a               50
  s1      x      1234     a               50
  s1      x      1234     a               50
  s1      x      1234     a               50
  s1      x      1234     a               50
  s2      y      4321     b               30
  s3      z      3219     c               40
  s3      z      3219     d               40

我要做的是在每天的产品总和之后插入每个产品的价格,并将两个数据框合并在一起,这样结果将是:

index    Name   Number  Product     Sum of Amount of Products Day     Price/product

  s1      x      1234     a               50                              34
  s1      x      1234     a               50                              34 
  s1      x      1234     a               50                              34
  s1      x      1234     a               50                              34
  s2      y      4321     b               30                              34
  s3      z      3219     c               40                              14
  s3      z      3219     b               40                              65

我已经尝试过合并并加入,但是它不起作用。基本上,我要尝试的是先在索引上创建一个vlookup,然后再在产品上创建另一个vlookup。如何在python中进行嵌套的vlookup?

1 个答案:

答案 0 :(得分:0)

IIUC,您可以仅将loc与相同的索引一起使用

df2 = df2.set_index(['index', 'Product'])
df = df.set_index(['index', 'product'])

然后

df2.loc[:, 'price/product'] = df['price/product']

                Name    Number  Sum_of_Amount_of_Products_Day   price/product
index   Product             
s1      a       x       1234    50                              34.0
        a       x       1234    50                              34.0
        a       x       1234    50                              34.0
        a       x       1234    50                              34.0
        a       x       1234    50                              34.0
s2      b       y       4321    30                              14.0
s3      c       z       3219    40                              54.0
        d       z       3219    40                              NaN