Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改数据帧单元格中名称的确切出现时间_Python_Pandas - Fatal编程技术网

Python 如何更改数据帧单元格中名称的确切出现时间

Python 如何更改数据帧单元格中名称的确切出现时间,python,pandas,Python,Pandas,我有一个多列的数据框。其中一列中存储了字符串。我想用新字符串更改这些字符串上的名称: 以下是一个例子: old_names = ['Adam', 'Alan', 'Andrew', 'Frank', 'Harry', 'Jack', 'Josh', 'Justin', 'Roger', 'Ryan', 'Amanda', 'Betsy', 'Courtney', 'Ellen', 'Heather', 'Katie', 'Kristin', 'Melanie', 'Nancy', '

我有一个多列的数据框。其中一列中存储了字符串。我想用新字符串更改这些字符串上的名称:

以下是一个例子:

    old_names = ['Adam', 'Alan', 'Andrew', 'Frank', 'Harry', 'Jack', 
'Josh', 'Justin', 'Roger', 'Ryan', 'Amanda', 'Betsy', 'Courtney', 'Ellen',
 'Heather', 'Katie', 'Kristin', 'Melanie', 'Nancy', 'Stephanie']

    new_names = ['Hanna', 'Brayden', 'Brooklyn', 'Ashlynn', 'Joshua', 
'Britni', 'Latoya', 'Hunter', 'Kaylie', 'Infant', 'Ashlea', 'Haley',
 'Caleb', 'Gage', 'Raheem', 'Mariel', 'Hakeem', 'Lukas', 'Isis', 'Nia']
我想用新名称[0]替换旧名称[0],用新名称[1]替换旧名称[1],依此类推。为此,我做了以下工作:

def change_names(data,old,new):
    for i in range(len(prev)):
        data['Sentence'] = data['Sentence'].str.replace(old[i],new[i])
    return data

data = pd.read_csv("mydata.csv")
changed_data = change_names(data,old_names,new_names)
# create a dictionary of old to new name
map_names = dict(zip(old_names, new_names))

# sample data frame
df = pd.DataFrame({'sentence':['Harry feels angry','Adam is happy','Frank went crazy.']})

# map new names to old names
df['sentence'] = df['sentence'].apply(lambda x: ' '.join(map_names.get(y, y) for y in x.split()))

print(df)

    sentence
0   Joshua feels angry
1   Hanna is happy
2   Ashlynn went crazy.
如果我应用此函数,我将用
latoyua
替换
Harry
,因为它首先用Joshua替换Harry,然后用Latoya替换Josh,同时用
Latoya
替换Joshua的前缀

我如何解决这个问题

编辑

这是数据框中的一个示例行:

>>> t.loc[220]
Sentence                            Harry feels angry.
Template        <person subject> feels <emotion word>.
Person                                           Harry
Name: 220, dtype: object
>>t.loc[220]
哈里感到生气。
模板的感觉。
人哈利
名称:220,数据类型:object

您可以执行以下操作:

def change_names(data,old,new):
    for i in range(len(prev)):
        data['Sentence'] = data['Sentence'].str.replace(old[i],new[i])
    return data

data = pd.read_csv("mydata.csv")
changed_data = change_names(data,old_names,new_names)
# create a dictionary of old to new name
map_names = dict(zip(old_names, new_names))

# sample data frame
df = pd.DataFrame({'sentence':['Harry feels angry','Adam is happy','Frank went crazy.']})

# map new names to old names
df['sentence'] = df['sentence'].apply(lambda x: ' '.join(map_names.get(y, y) for y in x.split()))

print(df)

    sentence
0   Joshua feels angry
1   Hanna is happy
2   Ashlynn went crazy.

这就是你想做的吗
old_names=new_names
您还可以删除
[]
.apply(lambda x:''.join(map_names.get(y,y)for y in x.split())
for generator