首页 > 解决方案 > 根据某些条件合并两个不同大小的数据帧

问题描述

已解决(请参阅下面 Unbridledscum 的评论

我目前正在尝试将两个数据框的信息连接在一起。

我的初始数据框包含产品 ID (SKU_id) 以及产品名称,如下所示:

(请原谅 SKU_id 的截断)

df
Out[127]: 
          SKU_id          Product Name
0   7.336012e+09  OLD STYLE BEER      
1   1.820001e+09  BUDWEISER BEER LONG 
2   1.820000e+09  BUDWEISER BEER      
3   3.410018e+09  MILLER GENUINE DRAFT
4   3.410018e+09  MILLER GENUINE DRAFT
5   8.066096e+09  CORONA EXTRA BEER NR

我的其他数据框包含所有其他产品信息,例如单位销售额等(以及 SKU_id)。

data.head()
Out[159]: 
       Store_id      SKU_id  WEEK  Units_Sold  QTY  PRICE Promotion 
20462  5         1820000016  166   1           1    3.79   NaN        
20463  5         1820000016  167   3           1    3.79   NaN        
20464  5         1820000016  168   6           1    3.79   NaN        
20465  5         1820000016  169   2           1    3.79   NaN        
20466  5         1820000016  170   1           1    3.79   NaN                    

我现在想加入这两个数据框。更具体地说,我想添加特定 SKU_id 的名称,该名称存在于第一个数据帧 (df) 而不是第二个数据帧 (data) 中。

两个数据帧都包含特定的 SKU_id。我想找到一种方法来查看第二个数据帧(数据)中的 SKU_id 是什么,然后从第一个数据帧(df)中添加相应的名称

我正在寻找的输出是这样的:

       Store_id      SKU_id  WEEK  Units_Sold  QTY  PRICE Promotion  Product Name
20462  5         1820000016  166   1           1    3.79   NaN       BUDWEISER BEER LONG  
20463  5         1820000016  167   3           1    3.79   NaN       BUDWEISER BEER LONG  
20464  5         1820000016  168   6           1    3.79   NaN       BUDWEISER BEER LONG  
20465  5         1820000016  169   2           1    3.79   NaN       BUDWEISER BEER LONG  
20466  5         1820000016  170   1           1    3.79   NaN       BUDWEISER BEER LONG  

问题是两个数据框的大小不同,我不知道如何编写代码来查看 SKU_id 并添加相应的名称。有什么建议么?提前致谢

标签: pythonpandasdataframe

解决方案


这是一个示例,其中df1您的问题中的数据框df2是您提供的第二个

for i,val in enumerate(df2['SKU_id']):
    df2.loc[i,"Product"]=df1.loc[df['SKU_id'] ==val, 'Product Name'].iloc[0]
df2.head()

Dataframe1我用作示例:

    SKU_id      Product Name
0   7336012000  OLD STYLE BEER
1   1820000016  BUDWEISER BEER LONG

Dataframe2我用作示例:

 Store_id   SKU_id
0   5   1820000016
1   5   1820000016
2   5   7336012000

这会给你类似的东西:

 Store_id   SKU_id  Product
0   5   1820000016  BUDWEISER BEER LONG
1   5   1820000016  BUDWEISER BEER LONG
2   5   7336012000  OLD STYLE BEER

推荐阅读