[英]To find the position of row based on two column values
我在 dataframe 中有 2 列,如下所示:
report pname
D Singapore
N Pradip
A
S Singapore
D
y Europe
我正在對列值執行驗證。在列報告中,有效值可以是 D、N 和 A,如果出現這些值以外的值,則會產生錯誤和索引。
但現在我想在兩列(報告,pname)上同時執行驗證。 如果報告具有值 D 和 A,則該列不應為空(null)。如果報告的 D 和 A 列值是 null,則應生成錯誤。
我所做的代碼用於一列驗證。
lst=list(df['report'])
lst
lst1=['D','N','A']
def valid_reportype(v, lst):
if v in lst1:
return True
return False
for i, v in enumerate(lst):
if not valid_reportype(v, lst):
print(f"value {v} at index {i} for column Reporting_Type is Invalid")
我的代碼只是對存在 D、N、A 值的一列進行驗證,它會產生錯誤。
我想同時檢查兩個列的值,即 D 和 A 是 pname 列值的值不應該是 null。如果是它應該會產生錯誤。
為什么不以pandas
方式一次獲取所有錯誤條目:
invalid_lines = df[~df['report'].isin(lst1) | (pd.isna(df['pname']) & df['report'].isin(['A', 'D']))]
然后您可以使用以下命令打印它們:
for i in range(len(invalid_lines)):
print("value " + str(invalid_lines.iloc[i, 0]) + " at index " + str(invalid_lines.index[i]) + " for column Reporting_Type is Invalid")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.