我得到了两个数据帧:df1大约有20000行,df2有7226行,如图所示:
df1:
df2:
如果两个数据帧具有相同的Review_Text值,我想将df2的“Final Coding”值复制到df1的“Final Coding”值。我使用了以下命令:
df1.loc[df1['Review_Text'].isin(df2['Review_Text'],'Final Coding'] = df2['Final Coding']
上述语句的问题在于,它不能替换df1的所有值。它只替换df1的索引号7226之前的值,之后不替换任何值。
我尝试了另一个命令,如下所示:
mask = df1['Review_Text'].isin(df2['Review_Text'])==True
df1['Final Coding'] = df1['Final Coding'].where(~mask,df2['Final Coding'],axis=0)
但最终还是遇到了同样的问题。
我搜索了stackoverflow的现有线程,找到了另一种方法。
所以我改变了命令如下:
df1.loc[df1['Review_Text'].isin(df2.set_index('Review_Text').index),'Final Coding'] = df2.set_index('Review_Text')['Final Coding']
但是,上面的命令引发了以下错误:
ValueError: cannot reindex from a duplicate axis
“Review_text”列中有一些文本重复,这就是它抛出此错误的原因。
我不知道如何克服这个问题。有人能帮我解决这个问题吗?