根据另一个列和唯一标识符在DataFrame中创建一个新列

时间:2019-01-17 16:23:34

标签: python pandas dataframe lambda

我正在尝试将一个名为time的列附加到我先前存在的dataFrame df1中。我的新列time的值是使用snapshotdf1中都存在的唯一标识符列df2来进行链接的。

我试图同时利用applylambda来帮助我创建此列,但是它不起作用。

df1 = pd.DataFrame({'product' : ['PENS', 'PENS', 'PENS', 'PENS', 'PENS','STAPLER','STAPLER'],
                'price' : [20,25,35,40,70,100,140],
                'snapshot' : [1,2,3,4,5,1,2]})

???df1
price  product  snapshot
0     20     PENS         1
1     25     PENS         2
2     35     PENS         3
3     40     PENS         4
4     70     PENS         5
5    100  STAPLER         1
6    140  STAPLER         2

df2 = pd.DataFrame({'snapshot' : [1,2,3,4,5],
               'publish_time' : ['10/10/2005', '2/19/2007', '6/20/2007', '7/10/2010', '7/15/2010']})

>>>df2
publish_time  snapshot
0   10/10/2005         1
1    2/19/2007         2
2    6/20/2007         3
3    7/10/2010         4
4    7/15/2010         5   

df1['time'] = df1['snapshot'].apply(lambda x : df2['publish_time'].loc[df2['snapshot'] == x])

ValueError: Wrong number of items passed 5, placement implies 1

理想情况下,我想要的是这样的东西:

>>>df1
    price  product         time  snapshot
 0     20     PENS   10/10/2005         1
 1     25     PENS    2/19/2007         2
 2     35     PENS    6/20/2007         3
 3     40     PENS    7/10/2010         4
 4     70     PENS    7/15/2010         5
 5    100  STAPLER   10/10/2005         1
 6    140  STAPLER    2/19/2007         2

0 个答案:

没有答案