首页 > 解决方案 > 用 df2 列值替换 df1 列值 - df-1 column-3 的值是 df-2 的列

问题描述

df-1 column-3 的值是 df-2 的列。我想用 df-2 中的相应值替换 df1 column-3 值,并以 col1 作为索引。

df1 looks like:
col1    col2    col3
----------------------
label1  val1    A
label2  val2    NaN
label3  val3    B

df2 looks like:
col1     A      B
-------------------
label1   v1    NaN 
label2   v2    NaN
label3   v3    v2


final df1 should be:
col1    col2    col3
----------------------
label1  val1    v1
label2  val2    Nan
label3  val3    v2

我可以通过将数据框转换为列表列表、处理它并再次将列表列表转换为数据框来实现这一点。但是我想知道有没有什么办法可以直接完成这个任务?

标签: pythonpython-3.xpandasdataframe

解决方案


利用df.lookup()

df   = df.set_index('col1')
df_n = df.dropna()

df.loc[df_n.index, 'col3'] = df2.set_index('col1').lookup(df_n.index, df_n.col3)

        col2    col3
col1        
label1  val1    v1
label2  val2    NaN
label3  val3    v2

推荐阅读