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']