使用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
是否可以在函数中返回标志?