python - 如何使用以任何大写字母开头的正则表达式从熊猫系列中提取字符串
问题描述
我想将字符串系列提取到一个新系列中,该系列仅包含以原始系列数据的大写字母开头的字符串。
我之前尝试过在熊猫系列中使用正则表达式并且效果很好,所以我将其用作参考。下面的代码是我在当前问题中使用的代码。
harness['new'] = harness['Material'].str.extract('.*\-(.*)\-.*',expand=True)
下面的代码是我目前用来提取以大写字母开头的字符串的代码
In [63]:
batch1['Wire Name'].head()
Out[63]:
0 2HC31A20
1 HC30A20
2 2HC42A20
3 2HC5H20
4 HC4M20
In [64]:
batch1['Grouping'] = batch1['Wire Name'].str.extract('^[A-Z].*',expand=True)
batch1['Grouping'].head()
Out [64]:
ValueError: pattern contains no capture groups
我希望结果是:
0 HC31A20
1 HC30A20
2 HC42A20
3 HC5H20
4 HC4M20
你觉得哪里不对?我已经从正则表达式页面和使用它的示例中进行了检查,但是当我使用上面的代码时它不起作用。
解决方案
您可以使用:
df = pd.DataFrame({'text': ['2HC31A20', 'HC30A20', '2HC42A20','2HC5H20', 'HC4M20']})
df['text'].str.extract(r'(^[A-Z][\w]+)', expand=False)
0 NaN
1 HC30A20
2 NaN
3 NaN
4 HC4M20
描述:
^[A-Z]
: 这意味着仅以大写字母开头。
[\w]+
: 这意味着取所有的A-Z, a-z, 0-9, _
大写字母。
推荐阅读
- python - appending input to the end of api call in python
- java - 了解 ListView 和适配器
- r - R DataTable: How to format a column to show numbers with comma for thousends?
- ruby-on-rails - Rails 5范围问题
- java - 当 SAM 方法在 java 中没有返回值时,Lambda 可以返回一个值
- python - Change the attributes of a character at a certain y,x location with python curses
- c++ - Member Data of Class not updating
- python - Python2:匹配所有名称的正则表达式模式
- python - 在 Django 创建的网站上运行简单的 Python 代码
- java - 如何从字符串请求生成序列?