社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python:基于文本匹配替换值

user2293224 • 3 年前 • 1299 次点击  

我得到了两个数据帧: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
 
1299 次点击  
文章 [ 1 ]  |  最新文章 3 年前
BENY
Reply   •   1 楼
BENY    3 年前

你能行

更新如下:

df1.reset_index(inplace=True, drop=True)
df2.reset_index(inplace=True, drop=True)

#==================================
m = df1['Review_Text'].isin(df2['Review_Text'])
v = df1['Review_Text'].map(df2.set_index('Review_Text')['Final Coding'])
df1.loc[m,'Final Coding'] = v

或者我们可以

df1.update(df1['Review_Text'].map(df2.set_index('Review_Text')['Final Coding']).to_frame('Review_Text'))