删除 pandas 系列或数据框中方括号内的所有内容

Removing everything inside squared brackets in pandas series or dataframe

您好,是否可以删除 内的所有内容,包括 方括号? 提前致谢

df = pd.DataFrame({'City': ['Santiago [1]','Madrid [2]','Barcelona [2]']})
df

City
0 Santiago [1]
1 Madrid [2]
2 Barcelona [2]

期望输出:

City
0 Santiago
1 Madrid
2 Barcelona

使用split + strip

df.City=df.City.str.split('[').str[0].str.strip()
df
        City
0   Santiago
1     Madrid
2  Barcelona

YOBEN_S的回答很完美。我只是添加了一个替代方案,您不必使用 strip() 只需使用 split() 将字符串拆分为中间的白色 space。

df.City=df.City.str.split().str[0]
df
        City
0   Santiago
1     Madrid
2  Barcelona

编辑:正如尼克评论的那样,这不适用于中间包含白色 space 的城市。如果您想使用白色 space

进行分隔,这里有一个替代方案
df = pd.DataFrame({'City': ['Santiago [1]','Madrid [2]','Barcelona [2]','New York [2]','India and China [10]']})
df.City=df.City.apply(lambda x : " ".join(x.split()[:-1]))
df
              City
0         Santiago
1           Madrid
2        Barcelona
3         New York
4  India and China

正则表达式也可以在这里工作...获取 [ 之前的所有字符:

df['extract'] = df.City.str.extract(r'(.*(?=\[))')

       City         extract
0   Santiago [1]    Santiago
1   Madrid [2]      Madrid
2   Barcelona [2]   Barcelona

这应该适用于出现在字符串中任意位置的一个或多个 [xxx]。

df.City.str.split('\[.*\]').str.join('')