Pandas 使用另一个数据帧仅更新数据帧中的某些值

Pandas 使用另一个数据帧仅更新数据帧中的某些值,pandas,dataframe,Pandas,Dataframe,如何使用另一个数据帧中的值更新数据帧一列中的某些值: # Main dataframe df1 = pd.DataFrame({'a':[1,2,3,4,5], 'b':['a2', 'a1', '?', '?', 'b2'], 'c':[100,101, 102, 103, 104]}) # Dataframe with new values for column 'b' df2 = pd.DataFrame({'a':[3,4], 'b':['b5', 'c5']}) # Result:

如何使用另一个数据帧中的值更新数据帧一列中的某些值:

# Main dataframe
df1 = pd.DataFrame({'a':[1,2,3,4,5], 'b':['a2', 'a1', '?', '?', 'b2'], 'c':[100,101, 102, 103, 104]})

# Dataframe with new values for column 'b'
df2 = pd.DataFrame({'a':[3,4], 'b':['b5', 'c5']})

# Result: Main dataframe with updated values for 'b', using column 'a' as index/key
pd.DataFrame({'a':[1,2,3,4,5], 'b':['a2', 'a1', 'b5', 'c5', 'b2'], 'c':[100,101, 102, 103, 104]})

您可以将
替换为
numpy.nan
,然后使用pandas的


df1=df1.replace('?',np.nan);df1.set_index('a')。首先合并(df2.set_index('a'))。重置_index()
?@很抱歉,这只是返回df1。我忘了将
替换为
np.nan
。@它已经工作了!非常感谢。如果你愿意贴出答案,我可以马上接受。
df1 = df1.replace('?', np.nan)
df1.set_index('a').combine_first(df2.set_index('a')).reset_index()