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嗯,我不知道这是要求。请看一下编辑。