根据条件替换一列的值

2024-09-27 17:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

df                  df_reference
col1  col2          col1 col2
 A     10            A    15
 B     25            B    33
 C     30            C    20
 A     12

我想基于col1比较这两个数据帧。 如果df_reference中的值大于df.col2,我想用df_reference.col2替换df.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)

Tags: 数据信息mapdfkeysloccol2col1
2条回答

我可以建议您首先基于“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_reference, left_on='col1', right_on='col1') df['col2'] = df.apply(greaterValue, axis=1) df = df.loc[:,['col1','col2']]

使用由^{}创建的^{}by Series,如果某些值不匹配,则用^{}替换:

s = df['col1'].map(df_reference.set_index('col1')['col2']).fillna(df['col2'])

df.loc[s > df['col2'], 'col2'] =  s
print (df)
  col1  col2
0    A    15
1    B    33
2    C    30
3    A    15

相关问题 更多 >

    热门问题