我有两个数据框:
它们两个都有不同的列和不同的形状。但是我需要将product_id对应的product_id加入到Data-1中。
有没有快速的方法来实现这一目标?谢谢。
答案 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中不存在的那些行。