我想創建一個將錯誤狀態寫入錯誤字典的函式。該字典將作為 JSON 輸出,以便在真實資料集中進行更正。錯誤陳述句必須包括行號、列名和一個簡單的句子。
import pandas as pd
import numpy as np
data=[[np.nan, 'Indiana','[email protected]']]
df=pd.DataFrame(data,columns=['Name','State','Email'])
req_dict={"Name","Email"}
errors={}
使用錯誤作為要寫入的錯誤字典
我已經嘗試過了,但它沒有正確讀取行號,也無法添加到錯誤字典中,而是覆寫了之前添加的資料。
def req_cols (df,req_dict,errors):
for c in req_dict:
for i in df.index:
if df[c].isna().any():
errors={ "row": i,
"column": c,
"message": "This is a required field, fill in " c " accordingly" }
return errors
我希望輸出是
{ "row": 0, "column": Name,
"message": "This is a required field, fill in "Name " accordingly" }
如何創建一個錯誤日志字典以將每個新錯誤附加到其中,該字典具有錯誤值的行位置和列名稱?
uj5u.com熱心網友回復:
您可以首先在必填欄位中獲取包含索引和列的串列NaN,然后在串列理解中為每個單元格構建錯誤訊息。
輸入
data=[[np.nan, 'Indiana','[email protected]'], ['Ben', 'Alaska','[email protected]'], ['Alan', 'Florida', np.nan]]
df=pd.DataFrame(data,columns=['Name','State','Email'])
print(df)
req_fields={"Name","Email"} # btw, this is a set, not a dict
Name State Email
0 NaN Indiana [email protected]
1 Ben Alaska [email protected]
2 Alan Florida NaN
編輯
您嘗試的更正版本:您仍然需要知道在哪個特定索引/列位置有一個 nan,否則您只會為一列中的每個 elem 創建一條錯誤訊息,因為整列中有一個 nan。
def req_cols (df,req_dict):
lst_of_errors = []
for c in req_dict:
for i in df.index:
if pd.isna(df.at[i,c]):
errors={ "row": i,
"column": c,
"message": f'This is a required field, fill in "{c}" accordingly'}
lst_of_errors.append(errors)
return lst_of_errors
print(req_cols(df,req_fields))
我使用 f-strings 在您的 dict 的錯誤訊息中創建字串。更多詳細資訊,請參見官方檔案。
舊:
我的任務解決方案:
搜索 NaN 并獲取帶有索引/列的串列:
mask = pd.isna(df[list(req_fields)]).stack()
all_nan_fields = mask.loc[mask].index.tolist()
print(all_nan_fields)
[(0, 'Name'), (2, 'Email')]
使用它來構建您的錯誤訊息:
list_with_errors = [
{"row": elem[0],
"column": elem[1],
"message": f"This is a required field, fill in '{elem[1]}' accordingly"}
for elem in all_nan_fields
]
print(list_with_errors)
[{'row': 0,
'column': 'Name',
'message': "This is a required field, fill in 'Name' accordingly"},
{'row': 2,
'column': 'Email',
'message': "This is a required field, fill in 'Email' accordingly"}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/525642.html
標籤:Python熊猫字典
