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
我想做的是寻找一个特定的模式。 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