我只需要替换col B中col A中的nan值
A
key lvalue group
a 1.0 a
c NaN a
e 3.0 a
a 1.0 b
c NaN b
e 3.0 b
B
key lvalue
a 2.0
c 2.0
e 5.0
预期输出:
key lvalue group
a 1.0 a
c 2.0 a
e 3.0 a
a 1.0 b
c 2.0 b
e 3.0 b
我尝试了一些类似的事情:
A = np.where(A['lvalue'].isna(), B, A)
A.fillna(B)
A.combine_first(B)
pd.merge_ordered(A, B, left_by='key')
A.loc[A['lvalue'].isnull(),'lvalue'] = B['lvalue']
但是没有运气。请帮助我实现这一目标
答案 0 :(得分:0)
可能没有我想的那么优雅,但是您可以将A
和B
合并在一起,然后使用添加的列填充lvalue
,最后再次删除该列:
C = A.merge(B, on='key', suffixes=('', '_y'), how='left')
C['lvalue'] = C['lvalue'].fillna(C['lvalue_y'])
C.drop(columns='lvalue_y')
# key lvalue group
# 0 a 1.0 a
# 1 c 2.0 a
# 2 e 3.0 a
# 3 a 1.0 b
# 4 c 2.0 b
# 5 e 3.0 b