不同版本的Regex字符串



我试图隔离Pandas数据帧中版本号不等于.0的实例——即,如果有10.0、10.1和10.2版本,我只想选择10.1和10.2。有人知道正确的正则表达式来实现这一点吗?谢谢

  • 使用布尔索引
  • 拆分.上的字符串并查看索引1处的值
  • 目前尚不清楚这是str还是float类型的列。
    • 如果列为str类型,请删除.astype(str)
import pandas as pd
df = pd.DataFrame({'versions': [10.0, 10.1, 10.2, 10.19]})
versions
10.00
10.10
10.20
10.19
df_f = df[df.versions.astype(str).str.split('.', expand=True)[1] != '0']
versions
10.10
10.20
10.19

尝试此模式r'bd+.0b'str.contains来创建用于切片.0字符串的布尔掩码。它只切出.0,并将.00保持为输出

示例df:

version
0    10.5
1    10.2
2    10.0
3     9.0
4    9.18
5   10.00
m = df.version.str.contains(r'bd+.0b')
df[~m]
Out[54]:
version
0    10.5
1    10.2
4    9.18
5   10.00

最新更新