【问题标题】:Change Specific Word in Pandas更改 Pandas 中的特定单词
【发布时间】:2022-11-24 12:55:35
【问题描述】:
我有一个数据框
city = pd.DataFrame({'id': [1,2,3,4],
'city': ['NRTH CAROLINA','NEW WST AMSTERDAM','EAST TOKYO','LONDON STH']})
如何将 NORTH 更改为 NORTH,将 WEST 更改为 WEST,将 STH 更改为 SOUTH,以便输出如下所示
id city
1 NORTH CAROLINA
2 NEW WEST AMSTERDAM
3 EAST TOKYO
4 LONDON STH
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
让我们先定义一个替换字典,然后使用Series.replace(regex=True) 替换为字典键的词边界。
import re
d = {
'NRTH': 'NORTH',
'WST': 'WEST',
'STH': 'SOUTH'
}
df['city'] = df['city'].replace({rf"{re.escape(k)}":v for k, v in d.items()}, regex=True)
print(df)
id city
0 1 NORTH CAROLINA
1 2 NEW WEST AMSTERDAM
2 3 EAST TOKYO
3 4 LONDON SOUTH
【解决方案2】:
你好,亚瑟!
我已经定义了 mapping_dict,您可以在其中定义您想要更改的任何其他词。
为了改变它们,我制作了一个单独的函数来映射城市名称。
import pandas as pd
city = pd.DataFrame({'id': [1,2,3,4],
'city': ['NRTH CAROLINA','NEW WST AMSTERDAM','EAST TOKYO','LONDON STH']})
mapping_dict = {'NRTH':'NORTH','WST':'WEST','STH':'SOUTH'}
def mapping_words(city_name):
updated_name = ""
for word in city_name.split():
if word in mapping:
updated_name += mapping[word]+" "
else:
updated_name += word+" "
return updated_name.strip()
city['city'] = city['city'].apply(lambda x: mapping_words(x))
我希望这可以帮助你。
谢谢!