Python 根据条件替换一列的值

Python 根据条件替换一列的值,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个名为df和df_reference的数据帧,其中包含以下信息: df df_reference col1 col2 col1 col2 A 10 A 15 B 25 B 33 C 30 C 20 A 12 我想基于col1比较两个数据帧。 如果df\u reference中的值大于df.col2的值,我想将df

我有两个名为
df
df_reference
的数据帧,其中包含以下信息:

df                  df_reference
col1  col2          col1 col2
 A     10            A    15
 B     25            B    33
 C     30            C    20
 A     12
我想基于
col1
比较两个数据帧。 如果
df\u reference
中的值大于
df.col2
的值,我想将
df.col2
的值替换为
df\u reference.col2

预期产出为:

df                  
col1  col2         
 A     15            
 B     33           
 C     30           
 A     15
我试过:

dict1 = {'a':'15'}
df.loc[df['col1'].isin(dict1.keys()), 'col2'] = sams['col1'].map(dict1)
系列使用
创建,如果某些值不匹配,则由和NAN替换为:


我可以建议您首先基于“col1”进行合并,然后应用一个函数生成一个新列,该列的值大于两个“col2”。那就把没用的柱子扔了吧

def greaterValue(row) :
   if (row['col2_x']>row['col2_y']) :
      return row['col2_x']
   else :
      return row['col2_y']
df=df.merge(df_引用,左_在='col1'上,右_在='col1'上)
df['col2']=df.apply(更大的值,轴=1)

df=df.loc[:,['col1','col2']

我不认为这回答了“如果df_引用中的值大于df.col2的值”,是吗?编辑:不,没有,请参见第C行:)@jezrael。如果df.col2中的值大于df_reference.col2,我不想替换该值
def greaterValue(row) :
   if (row['col2_x']>row['col2_y']) :
      return row['col2_x']
   else :
      return row['col2_y']