我试图隔离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