使用正则表达式清理数据框列值

问题描述 投票:0回答:1

我正在查看其中有“城市”列和值的格式设置为Entity [“城市”,{“合肥”,“安徽”,“中国”}的数据集]]。我想清理此列,以便仅保留城市名称。在上面的示例中,我希望除去合肥以外的所有内容。我试图将rstrip和lstrip与正则表达式一起使用。即使基于在线regex调试器网站,我的regex似乎是正确的,但是代码无法正常工作。这是我正在使用的代码:

df['City'] = df['City'].map(lambda x: x.lstrip(r'(Entity["City", {")').rstrip(r'(",\s"\w+"}])'))

我希望结果只是合肥。但是我得到的结果是:

Hefei", "Anhui", "China

lstrip似乎可以正常工作,但是rstrip只会删除“}],而不能删除我需要删除的其余字符。

我希望有人可以告诉我我在哪里犯错,或者告诉我一种更好的方法来完成此任务。

python regex pandas data-cleaning
1个回答
0
投票

IIUC,您可以这样做:

df['city'] = df['city'].str.extract('{"(.+?)"')
print(df)

输出

    city
0  Hefei
© www.soinside.com 2019 - 2024. All rights reserved.