检查 pandas 列中的语法是否符合特定条件

check if syntax in pandas column meets certain criteria

我下面有数据框:

df = pd.DataFrame(np.array(['YM.296','MM.305','VO.081.019','VO.081.016','AM.081.002.001','AM081','SR.082','VO.081.012.001','VO.081.012.003']))

我想知道在哪一行语法类似于 'XX.222.333'(示例)。因此,两个字母后跟一个停止符 ('.'),然后是三个数字,然后是一个停止符 ('.'),然后再跟三个数字。

期望的结果如下所示:

tf = pd.DataFrame(np.array([False,False,True,True,False,False,False,False, False]))

有没有一种快速的 pythonic 方法来做到这一点?

您可以使用 str.contains 和正则表达式来做到这一点。

如下:

df[0].str.contains(r'^[A-Z]{2}\.\d{3}\.\d{3}$', regex=True)

输出:

0    False
1    False
2     True
3     True
4    False
5    False
6    False
Name: 0, dtype: bool

这是使用的正则表达式的可视化: