Pandas 列上的条件操作

Pandas 列上的条件操作,pandas,multiple-columns,Pandas,Multiple Columns,df1= df2= name col1 a 1 b 2 c 3 d 4 我想分别比较两个数据帧和多个其他两列中的名称。因此,输出将如下所示 df3= name col2 b 3 c 9 a 2 d 3 使用多个by进行正确排序,并使用原始col进行提取: 对于新的数据帧使用: 或另一个具有左联接的解决方案: df3 = df1.assign('col_new' = df1.pop(

df1=

df2=

name    col1
a       1
b       2
c       3
d       4

我想分别比较两个数据帧和多个其他两列中的名称。因此,输出将如下所示

df3=


name    col2
b       3
c       9
a       2
d       3
使用多个by进行正确排序,并使用原始
col
进行提取:

对于新的数据帧使用:

或另一个具有左联接的解决方案:

df3 = df1.assign('col_new' = df1.pop('col').mul(df1['name'].map(df2.set_index('name')['col'])))

第一种解决方案非常有效。谢谢:)第二个解决方案给出了错误“无法分配给函数调用”,如果名称不在df1中,如何处理结果“Nan”。如果在第二列中找不到名称,则要将列与默认值相乘df@ppb然后使用带有默认值的参数
fill_value
,如
df1.pop('col').mul(df1['name'].map(df2.set_index('name')['col')),fill_value=1)
df1['col_new'] = df1.pop('col').mul(df1['name'].map(df2.set_index('name')['col']))
df3 = df1.assign('col_new' = df1.pop('col').mul(df1['name'].map(df2.set_index('name')['col'])))
df3 = df1.merge(df2, on='name', how='left')
df3['col_new'] = df3.pop('col_x').mul(df3.pop('col_y'))