首页 > 解决方案 > 在python中删除分隔符(括号)后的文本

问题描述

我正在尝试删除“(”分隔符之后的文本,首先我想计算至少有一个“(”的行,然后删除此分隔符之后的文本,包括分隔符。

包含文本的列是“国家”,如下所示:

Micronesia (Federated States of)

我希望这样的结果:

Micronesia

这就是我试图计算行数

energy['Country'].value_counts()[['(']].sum

它返回了这个错误:

"None of [Index(['('], dtype='object')] are in the [index]"

为了在分隔符后删除 xt 我试过这个:

energy['Country'] = energy['Country'].split("(", 1)

它返回了这个错误:

AttributeError: 'Series' object has no attribute 'split'

我怎么能解决这个问题?

标签: pythonpandas

解决方案


您可以应用str.split到列,然后使用第一个元素.str[0]并删除前导/尾随空格str.strip

df = pd.DataFrame({'country': ['Micronesia (Federated States of)']})

df['country'] = df['country'].str.split('(').str[0].str.strip()
df

输出:

      country
0  Micronesia

还有另一个(不那么冗长)选项str.extract

df['country'] = df['country'].str.extract('(.*)\s*\(')

推荐阅读