Python 熊猫:替换字符串中的值

Python 熊猫:替换字符串中的值,python,string,pandas,dataframe,duplicates,Python,String,Pandas,Dataframe,Duplicates,我有数据帧,我尝试从其他df替换它 我使用: df['term_code'] = df.search_term.map(rep_term.set_index('search_term')['code_action']) 但我有一个错误: File "C:/Users/����� �����������/Desktop/projects/find_time_before_buy/graph (2).py", line 36, in <module> df['term_code'] =

我有数据帧,我尝试从其他df替换它

我使用:

df['term_code'] = df.search_term.map(rep_term.set_index('search_term')['code_action'])
但我有一个错误:

File "C:/Users/����� �����������/Desktop/projects/find_time_before_buy/graph (2).py", line 36, in <module>
df['term_code'] = df.search_term.map(rep_term.set_index('search_term')['code_action'])
 File "C:\Python27\lib\site-packages\pandas\core\series.py", line 2101, in map
indexer = arg.index.get_indexer(values)
 File "C:\Python27\lib\site-packages\pandas\indexes\base.py", line 2082, in get_indexer
   raise InvalidIndexError('Reindexing only valid with uniquely'
pandas.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects
而且
rep_term
看起来像

search_term code_action
авито   6
вк  9
яндекс  12
мтс 7
связной 8
ситилинк    8

DataFrame
rep\u term
search\u term
中存在重复项问题

我模拟它:

import pandas as pd

df = pd.DataFrame({'search_term':[1,2,3]})

print (df)
   search_term
0            1
1            2
2            3
对于
search\u term
中的值
1
,在
code\u action
中有
2
值:

rep_term = pd.DataFrame({'search_term':[1,2,1], 'code_action':['ss','dd','gg']})
print (rep_term)
  code_action  search_term
0          ss            1
1          dd            2
2          gg            1


df['term_code'] = df.search_term.map(rep_term.set_index('search_term')['code_action'])
print (df)
#InvalidIndexError: Reindexing only valid with uniquely valued Index objects
因此,首先通过以下方式确定重复VAUE的行:

然后,您可以通过将最后一个或第一个值保留为


我应该重命名列吗?当这个列的名称是另一个时,它也返回了这个错误。给我一点时间,我补充一下你们能做些什么来回答这个问题。
rep_term = pd.DataFrame({'search_term':[1,2,1], 'code_action':['ss','dd','gg']})
print (rep_term)
  code_action  search_term
0          ss            1
1          dd            2
2          gg            1


df['term_code'] = df.search_term.map(rep_term.set_index('search_term')['code_action'])
print (df)
#InvalidIndexError: Reindexing only valid with uniquely valued Index objects
print (rep_term[rep_term.duplicated(subset=['search_term'], keep=False)])
  code_action  search_term
0          ss            1
2          gg            1
rep_term1 = rep_term.drop_duplicates(subset=['search_term'], keep='first')
print (rep_term1)
  code_action  search_term
0          ss            1
1          dd            2

rep_term2 = rep_term.drop_duplicates(subset=['search_term'], keep='last')
print (rep_term2)
  code_action  search_term
1          dd            2
2          gg            1