使用Python在dataframe列中设置标志和消息

使用Python在dataframe列中设置标志和消息,python,pandas,function,Python,Pandas,Function,我喜欢: PAN 0 ACBDV8521N 1 2 NaN 3 AWVFEF 我想要这样的 PAN PAN_Status Invalid 0 ACBDV8521N Valid PAN Number False 1 PAN is not present True 2 NaN PAN is not

我喜欢:

      PAN        
0   ACBDV8521N  
1   
2     NaN
3    AWVFEF 
我想要这样的

       PAN           PAN_Status          Invalid
0   ACBDV8521N     Valid PAN Number       False
1                  PAN is not present     True 
2     NaN          PAN is not present     True 
3    AWVFEF        Not Valid PAN          False 
我正在尝试:

def panValidation(ele):
    if (ele.strip() =='') or pd.isna(ele):
        df['invalid'] = True
        return (True,"PAN is not present")
    elif re.match(r'^[A-Z]{5}[0-9]{4}[A-Z]$',ele):
        return "Valid PAN number"
    else:
        return "Not Valid PAN"

但我还希望使用函数返回
True/False
标志,如果PAN编号为空/Null,则在无效列中设置True,否则设置False

最简单的方法是在下一步创建新列:

df['Invalid'] = df['PAN_Status'] == 'PAN is not present'

如果需要在函数使用中返回元组:

def panValidation(ele):
    if pd.isna(ele) or (ele.strip() ==''):
        return ("PAN is not present", True)
    elif re.match(r'^[A-Z]{5}[0-9]{4}[A-Z]$',ele):
        return ("Valid PAN number", False)
    else:
        return ("Not Valid PAN", False)
    
df[['PAN_Status', 'Invalid']] = df['PAN'].apply(panValidation).tolist()
print (df)
          PAN          PAN_Status  Invalid
0  ACBDV8521N    Valid PAN number    False
1         NaN  PAN is not present     True
2         NaN  PAN is not present     True
3      AWVFEF       Not Valid PAN    False

是否可以在函数中返回标志?