gpt4 book ai didi

python - pandas 使用正则表达式匹配根据另一列的值为一列设置 bool 值

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:03 26 4
gpt4 key购买 nike

我有一个 df,其中一列 ( acount_no ) 包含空字符串、空格字符串和重复数字字符串作为其值。对于这些值,我想创建一个新列 ( valid_account_no ) 并将 False 设置为其对应的行。此外,如果任何 account_no 的长度为 <= 4,它们将被设置 Falsevalid_account_nodf 看起来像,

 id    account_no    valid_account_no
1 False
2 999999 False
3 1234 False
4 123456 True

这是我的代码,

# sets boolean values of column valid account no when account no is spaced or repeated number
df['valid_account_no'] = df['account_no'].str.match(r"\b(\d)\1+\b| +")

# if length of any account nos are <= 4 or the account nos are empty
# set values of column valid account no to False
invalid_account_indices = df[(df['account_no'].str.len() <= 4) |
(df['account_no'] == '')].index
df.loc[invalid_account_indices, 'valid_account_no'] = False

我想知道是否有更好的方法来实现这一点,在某种意义上使其更简洁高效。

最佳答案

如果您的方法本身不错,另一种解决方法是使用简单的 bool 代数,即

m1 = df['account_no'].str.match(r"\b(\d)\1+\b| +")
m2 = df['account_no'].str.len()<=4
m3 = df['account_no'] == ''
df['valid_account_no'] = (m1) | (m2 & m3)

关于python - pandas 使用正则表达式匹配根据另一列的值为一列设置 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47636441/

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