Pandas 列上的条件操作
df1= df2=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(
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'))