gpt4 book ai didi

python - 如何更正此正则表达式和函数以验证 Pandas 列值模式的正确性?

转载 作者:行者123 更新时间:2023-12-04 10:45:20 25 4
gpt4 key购买 nike

我想检查我的 pandas 列中的字符串是否遵循特定模式。我想用一个函数 check_pattern 和一个正则表达式来做到这一点。除了前两位数字后有一个破折号外,数据应仅由数字组成。正确的值应该是 08-15643。错误的值可能是例如 07-456d、04-47897-1、084564 等)

请看一下数据和我的代码:

df = pd.DataFrame(str_list)
str_list = ['19-123', '08-156445787', '08-156468787-1']
df.rename(columns={df.columns[0]: "Strings" }, inplace = True)

def check_pattern(Strings):
is_correct_pattern = False
pattern = re.compile("^[0-9]{2}'-'[0-9]")
if pattern.match(Strings) == True:
is_correct_pattern = True
return is_correct_pattern

df['Correct_pattern'] = df['Strings'].apply(lambda x: check_pattern(x))

我的输出应该是带有附加列 Correct_Pattern 的原始数据帧 df。给定数据 df 后,该列的结果应为 True、True、False。如果您有解决此问题的其他想法,我也很感兴趣:)

最佳答案

您要使用 Series.str.match method查看模式是否与字符串匹配:

df['Correct_pattern'] = df['Strings'].str.match(r'^\d{2}-\d+$')
^\d{2}-\d+$模式匹配字符串的开头( ^ ,注意它与 re.match 是多余的,但最好明确保留 anchor ),然后是 2 位数字, -然后 \d+匹配任何 1+ 位数字,然后使用 $ 断言字符串末尾的位置 anchor 。

str_list = ['19-123', '08-156445787', '08-156468787-1']作为输入,输出为:
>>> df
Strings Correct_pattern
0 19-123 True
1 08-156445787 True
2 08-156468787-1 False

关于python - 如何更正此正则表达式和函数以验证 Pandas 列值模式的正确性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com