如何将一列从另一个数据框连接到特定列?

时间:2018-11-14 09:29:46

标签: python dataframe

我有两个数据框:

  • 数据1:(product_id,...)
  • 数据2:(product_id,product_category,...)

它们两个都有不同的列和不同的形状。但是我需要将product_id对应的product_id加入到Data-1中。

有没有快速的方法来实现这一目标?谢谢。

3 个答案:

答案 0 :(得分:1)

假设df1是您的df,其中包含产品ID和多余的列:

df1 = pd.DataFrame({
        'p_id': {0:1, 1:2, 2:3, 3:4},
        'p1_extra': {0:'x', 1:'x', 2:'x', 3:'x', 4:'x'}
        })

df2是您的df,其中包含产品ID,说明和其他列:

df2 = pd.DataFrame({
        'p_id': {0:1, 1:2, 2:3, 3:4, 4:5},
        'p_desc': {0:'a',1:'b',2:'c',3:'d',4:'e'},
        'p2_unwanted': {0:'x', 1:'x', 2:'x', 3:'x', 4:'x'}
        })

据我了解,您只是想将product_description的{​​{1}}加入df2,显然是将其与正确的df1对齐?

在这种情况下,要以将产品说明附加到product_id的方式将两者结合在一起,只需使用熊猫df1功能

merge()

df_merged = df1.merge(df2[['p_id', 'p_desc']], how='left', on='p_id') 子句很重要,具体取决于您要实现的目标,在这种情况下,how将所有数据保留在left中,并且仅添加df1(如果存在),其他product_description值。如果只想维护也有NULL的值,则可以调用product_description。与SQL语法相同。

答案 1 :(得分:0)

数据1可以是df1。 数据2可以是df2。

df1 = df1.sort_values(by=['product_id'])
df2 = df2.sort_values(by=['product_id'])

df1 = df2.drop('product_id', axis = 1)


df = pd.concat([df1, df2], axis = 1, ignore_index = True)

这应将Data1的产品ID与Data2中的Product_category对齐。

答案 2 :(得分:0)

请在下面找到示例代码。

inner

这里,将删除DF1中不存在的那些行。