获取熊猫数据框中的正则表达式匹配索引不起作用

时间:2020-01-26 07:32:48

标签: python regex pandas

我有一个excel工作表,我正在阅读大熊猫以进行解析和以后的分析。它具有以下格式。所有值都是字符串。它们将在以后转换为浮点数/整数,但将它们作为字符串有助于解析。

column1  |  column2 | column3 |
-----------------------------
12345   |10         |20       |
txt     |25         |65       |
35615   |15         |20       |
txt     |35         |20       |

我需要获取column1中所有5位数字的索引。始终为5位数。我正在使用以下正则表达式。

\b\d{5}\b

在使用任何内置字符串方法时,让熊猫正确匹配5位数字时遇到问题。

我尝试了以下方法。

df.column1.str.contains('\b\d{5}\b', regex=True).index.list()
df.column1.str.match('\b\d{5}\b').index.list()

我希望它会返回

[0,2]

这两个都返回一个空列表。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

在字符串前添加r,用boolean indexing过滤,然后将索引值列出:

i = df[df.column1.str.contains(r'\b\d{5}\b')].index.tolist()
print (i)
[0, 2]

或者,如果只想解析长度为5的数值,则用^$来更改正则表达式,以表示字符串的开头和结尾:

i = df[df.column1.str.contains(r'^\d{5}$')].index.tolist()