【问题标题】:How to extract only the string component between parenthesis?如何仅提取括号之间的字符串组件?
【发布时间】:2020-02-10 02:19:28
【问题描述】:
我正在寻找一种从数据列中删除特定元素的有效方法。
我有这样的数据:
year
1 (1991)
10 (1991-2001)
8 (1991-1998)
2 (2000-2002)
我想变成这样:
year
1991
1991 - 2001
1991 - 1998
2000 - 2002
我想删除括号和括号前后的元素。
【问题讨论】:
标签:
python
regex
pandas
etl
data-cleaning
【解决方案1】:
用正则表达式:
df = pd.DataFrame({'year': ['1 (1991)', '10 (1991-2001)', '8 (1991-1998)', '2 (2000-2002)']})
year
1 (1991)
10 (1991-2001)
8 (1991-1998)
2 (2000-2002)
df['year'] = df['year'].str.extract(r'\((.*)\)')
year
1991
1991-2001
1991-1998
2000-2002
【解决方案2】:
你可以使用下面的代码
df['year'] = df['year'].str.split('(').str[1].str.strip(')')
输出
year
0 1991
1 1991-2001
2 1991-1998
3 2000-2002
【解决方案3】:
怎么样:
df['year'] = df['year'].str[1:-1]
如果您的数据并非总是以'()' 开头/结尾,则更安全:
# str.strip accepts regex
df['year'] = df['year'].str.strip('(|)')
输出:
1 1991
10 1991-2001
8 1991-1998
2 2000-2002
Name: year, dtype: object