Python 如何在dataframe中用字符串替换endswith

Python 如何在dataframe中用字符串替换endswith,python,pandas,dataframe,parsing,replace,Python,Pandas,Dataframe,Parsing,Replace,我有一个数据帧df,看起来像这样: Company Name ID 0 Finl Corp 111 1 Fund Tr 222 2 Invt Fd 333 3 Govt Fd 444 4 Trinity Inc 555 我正在替换通常缩写的字符串: df['Company Name'] = df['Company Name'].str.repla

我有一个数据帧
df
,看起来像这样:

      Company Name     ID
0        Finl Corp    111
1          Fund Tr    222
2          Invt Fd    333           
3          Govt Fd    444
4      Trinity Inc    555
我正在替换通常缩写的字符串:

df['Company Name'] = df['Company Name'].str.replace('Finl', 'Financial')
df['Company Name'] = df['Company Name'].str.replace('Tr', 'Trust')
df['Company Name'] = df['Company Name'].str.replace('Invt', 'Investment')
df['Company Name'] = df['Company Name'].str.replace('Fd', 'Fund')
df['Company Name'] = df['Company Name'].str.replace('Govt', 'Government')
但是,只有当
Tr
是字符串的最后两个字符时,我如何将
Tr
替换为
Trust
,如行
1
(而不是行
4

我可以做类似的事情吗

df['Company Name']=df['Company Name'].str.endswith('Tr')。replace('Tr','Trust')
以便输出为:

      Company Name    ID  
0   Financial Corp   111
1       Fund Trust   222
2  Investment Fund   333
3  Government Fund   444
4      Trinity Inc   555

您可以使用
$
匹配
替换中的行尾:

df['Company Name'] = df['Company Name'].str.replace(' Tr$', ' Trust')

编写一个
def expand\u trust:
helper函数, 这将“Tr”替换为“Trust”

然后使用修改数据帧:

df["Company Name"] = df["Company Name"].apply(expand_trust)
您的助手可以使用
.endswith(…)

但是您可能会发现正则表达式中的
$
更方便。

如果您首先选择要替换为
df.loc
的行并将其分配给相应的替换字符串,则不需要
str.replace

df.loc[df['Company Name'].str.endswith('Finl')] = 'Financial'
我建议将文本/替换DUO放在字典中并循环执行,而不是重复覆盖整个
df['Company Name']
列,例如:

replace_dict = {'Finl': 'Financial', 
                'Tr': 'Trust', 
                'Invt': 'Investment', 
                'Fd': 'Fund', 
                'Govt': 'Government'}

for k, v in replace_dict.items(): 
    df.loc[df['Company Name'].str.endswith(k)] = v 

使用
Replace
替换为
regex=True
,一次替换多个内容:

repl_dict = {'Govt': 'Government', 'Fd$': 'Fund',}                                                                                                  
df['Company Name'].replace({k : v for k, v in repl_dict.items()}, 
                           regex=True)                                                            

0          Finl Corp
1            Fund Tr
2          Invt Fund
3    Government Fund
4        Trinity Inc
Name: Company Name, dtype: object

这里的预期产量是多少;
Govt
是否也应该更改,即使它不是字符串“Govt Fd”的结尾?是的,问得好。我已经对它进行了更新,这样就可以清楚地知道如何使用字典来处理所有的案例,比如:
{'Govt$':'Government','Fd$':'Fund','Finl':'Financial','Invt':'Investment'}
。我应该在原来的问题中更清楚地说明这一点,但我如何才能使其他字符串(例如,
Finl
Financial
Govt
Government
,等等)也被正确替换了吗?@MSD如果你使用
repl dict={'Govt':'Government','Tr$':'Trust','Fd':'Fund','Finl':'Finl':'fincial','fincial','Invt':'Investment'}
,然后
{k:v代表k,v在repl dict.items()
在替换中,您将立即执行所有操作think@MSD嗯,我不知道这是要求。请看一下编辑。