簡體   English   中英

根據兩列值查找行的 position

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM