删除 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('')
您好,是否可以删除 内的所有内容,包括 方括号? 提前致谢
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('')