У меня есть датафрейм df,
plan_year name metal_level_name
0 20118 Gold Heritage Plus 1500 - 02 Gold
1 2018 NaN Platinum
2 2018 Gold Heritage Plus 2000 - 01 Gold
Я поставил проверку данных в столбцы plan_year
и name
, как показано ниже,
m4 = ((df['plan_year'].notnull()) & (df['plan_year'].astype(str).str.isdigit()) & (df['plan_year'].astype(str).str.len() == 4))
m1 = (df1[['name']].notnull().all(axis=1))
Я получаю действительныйкадр данных с ниже,
df1 = df[m1 & m4]
Я могу получить строки, которых нет в df1 (строки, которые являются недопустимыми)
merged = df.merge(df1.drop_duplicates(), how='outer', indicator=True)
merged[merged['_merge'] == 'left_only']
Я хочу отслеживать, какая строка не удаласьиз-за какой проверки.
Я хочу получить кадр данных со всеми недопустимыми данными, который будет выглядеть примерно так:
plan_year name metal_level_name Failed message
0 20118 Gold Heritage Plus 1500 - 02 Gold Failed due to wrong plan_year
1 2018 NaN Platinum name column cannot be null
Может кто-нибудь помочь мне с этим, пожалуйста.