pandas 用一个DF中的值替换另一个DF中的值的最快方法

2vuwiymt  于 2023-01-11  发布在  其他
关注(0)|答案(1)|浏览(162)

我有一个 Dataframe df1,如下所示:

class     val
12        1271
12        1271
34        142
34        142

另一个DF2看起来像这样

class  val
12     123
34     141
69     667

将CorrectValMap到df1的最快方法是什么,这样得到的df是:

class     val
12        123
12        123
34        141
34        141

理想情况下,我会使用df.merge连接2个dfs,删除瓦尔字段,并使用val重命名CorrectVal,如下所示

df2 = df2.rename(columns={'val':'correctVal'})
df_resultant=df1.merge(df2, how ='left' , on='class')
df_resultant.drop(columns='val').rename(columns={'CorrectVal':'val'})

但这可能不是最快的方法,对吧

x7yiwoj4

x7yiwoj41#

您的解决方案应通过从df1中删除列val来简化:

df_resultant=df1.drop(columns='val').merge(df2, how ='left' , on='class')

或者使用Series.mapMap,我想这个解决方案应该更快,最好在真实的数据中测试:

df_resultant = df1.assign(val= df1['class'].map(df2.set_index('class')['val']))

相关问题