Pandas 在一列上使用正则表达式进行数据验证

Pandas data validation with regex on one column

我想做的是寻找一个特定的模式。 1 个字母,破折号,后跟年份和字母,如“A-2012A”。之后,该列的其余值可以是任何值。我想确认这第一部分。和 return 一个 true/false 值。可能吗?

模式letter-yearletter

使用正则表达式对一列进行字符串验证。

example_column_1

DNA \ Assay
A-2000X-27
A-2000X-32
A-2000X-45
A-2000X-48
A-2000X-80
truth_value = df['DNA \ Assay'].str.match(r'').astype(bool)

示例,r'' 正则表达式中没有任何内容。

我的预期输出是 True

example_column_2

DNA \ Assay
Embryo FTA-Code-ID-2
Embryo FTA-Code-ID-3
Embryo FTA-Code-ID-4
Embryo FTA-Code-ID-5
Embryo FTA-Code-ID-6

我对 example_column_2 的预期输出是 False

使用正则表达式:

df['valid'] = df['DNA \ Assay'].str.match(r'[A-Z]-\d{4}[A-Z]', case=False)

输出:

  DNA \ Assay  valid
0  A-2000X-27   True
1  A-2000X-32   True
2  A-2000X-45   True
3  A-2000X-48   True
4  A-2000X-80   True

如果您想验证 all 个值:

df['DNA \ Assay'].str.match(r'[A-Z]-\d{4}[A-Z]', case=False).all()

输出:True