Py学习  »  Python

Python:基于文本匹配替换值

user2293224 • 3 年前 • 1373 次点击  

我得到了两个数据帧:df1大约有20000行,df2有7226行,如图所示:

df1: enter image description here

df2:

enter image description here

如果两个数据帧具有相同的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”列中有一些文本重复,这就是它抛出此错误的原因。 我不知道如何克服这个问题。有人能帮我解决这个问题吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130922
 
1373 次点击  
文章 [ 1 ]  |  最新文章 3 年前