根据两列值查找行的位置
To find the position of row based on two column values
我在数据框中有 2 列,如下所示:
report pname
D Singapore
N Pradip
A
S Singapore
D
y Europe
我正在对列 values.In 执行验证,该列报告有效值可以是 D、N 和 A,如果出现这些值以外的值,则会产生错误和索引。
但是现在我想对两列(report,pname) 同时执行验证。如果报告有值 D 和 A,则该列不应为空(空)。如果报告的 D 和 A 列值为空,则应生成错误。
我所做的代码是针对一列验证的。
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.If 的值,它应该会产生错误。
为什么不以 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")
我在数据框中有 2 列,如下所示:
report pname
D Singapore
N Pradip
A
S Singapore
D
y Europe
我正在对列 values.In 执行验证,该列报告有效值可以是 D、N 和 A,如果出现这些值以外的值,则会产生错误和索引。
但是现在我想对两列(report,pname) 同时执行验证。如果报告有值 D 和 A,则该列不应为空(空)。如果报告的 D 和 A 列值为空,则应生成错误。
我所做的代码是针对一列验证的。
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.If 的值,它应该会产生错误。
为什么不以 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")