检查 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
这是使用的正则表达式的可视化:
我下面有数据框:
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
这是使用的正则表达式的可视化: