#python #regex #pandas #function
Вопрос:
У меня есть Df, как это
Name PAN
0 x BBDFW7894Q
1 s
2 A QWE7892E
я хочу, чтобы df был таким после проверки номера лотка
Name PAN PAN_Status
0 x BBDFW7894Q Valid PAN number
1 s PAN is not present
2 A QWE7892E Invalid PAN number
я пытаюсь использовать нижеприведенную логику
df["PAN_Status"] = ["Valid PAN number" if re.match(r'^[A-Z]{5}[0-9]{4}[A-Z]
но мне нужна функция для этого
Ответ №1:
Используйте numpy.select
с Series.str.match
и для второго условия проверяется пропущенные значения или строки emty:
m1 = df["PAN"].str.match(r'^[A-Z]{5}[0-9]{4}[A-Z]
Решение с функцией:
def test(ele):
if (ele.strip() =='') or pd.isna(ele):
return "PAN is not present"
elif re.match(r'^[A-Z]{5}[0-9]{4}[A-Z]
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа 'def (): возврат кода'
2. @user14784453 - Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 - Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
,ele)
else ("PAN is not present"if ele==' ' else "Not Valid PAN") for ele in
но мне нужна функция для этого
Ответ №1:
Используйте numpy.select
с Series.str.match
и для второго условия проверяется пропущенные значения или строки emty:
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа 'def (): возврат кода'
2. @user14784453 - Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 - Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
, na=False)
m2 = df["PAN"].str.strip().eq('') | df['PAN'].isna()
df["PAN_Status"] = np.select([m1, m2],
['Valid PAN number','PAN is not present'],
'Not Valid PAN')
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа 'def (): возврат кода'
2. @user14784453 - Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 - Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
,ele)
else ("PAN is not present"if ele==' ' else "Not Valid PAN") for ele in
но мне нужна функция для этого
Ответ №1:
Используйте numpy.select
с Series.str.match
и для второго условия проверяется пропущенные значения или строки emty:
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа ‘def (): возврат кода’
2. @user14784453 — Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 — Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
,ele):
return «Valid PAN number»
else:
return «Not Valid PAN»
df[«PAN_Status»] = df[«PAN»].apply(test)
print (df)
Name PAN PAN_Status
0 x BBDFW7894Q Valid PAN number
1 s NaN PAN is not present
2 A QWE7892E Not Valid PAN
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа ‘def (): возврат кода’
2. @user14784453 — Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 — Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
,ele)
else («PAN is not present»if ele==’ ‘ else «Not Valid PAN») for ele in
но мне нужна функция для этого
Ответ №1:
Используйте numpy.select
с Series.str.match
и для второго условия проверяется пропущенные значения или строки emty:
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа ‘def (): возврат кода’
2. @user14784453 — Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 — Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
, na=False)
m2 = df[«PAN»].str.strip().eq(») | df[‘PAN’].isna()
df[«PAN_Status»] = np.select([m1, m2],
[‘Valid PAN number’,’PAN is not present’],
‘Not Valid PAN’)
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа ‘def (): возврат кода’
2. @user14784453 — Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 — Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.
,ele)
else («PAN is not present»if ele==’ ‘ else «Not Valid PAN») for ele inно мне нужна функция для этого
Ответ №1:
Используйте numpy.select
с Series.str.match
и для второго условия проверяется пропущенные значения или строки emty:
Решение с функцией:
Комментарии:
1. сэр ,вы всегда правы, но мне нужна функция типа ‘def (): возврат кода’
2. @user14784453 — Готово. Если мой ответ(ы) был полезен, не забудьте принять его. Спасибо.
3. @user14784453 — Чтобы отметить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с пустого на зеленый ( см. скриншот ). Спасибо.