3 回答

TA貢獻1836條經(jīng)驗 獲得超13個贊
使用dict comprehension:
import math
print({k: int(v) if k == 'age' or k == 'year' and not math.isnan(v) else v for k,v in d.items()})
輸出:
{
'artForm': 'Madur', 'artistName': 'Bharati Dolai', 'gender': 'F',
'district': 'Paschim Medinipur', 'phone': '',
'artisanCard': {'exists': 'N', 'cardNo': ''},
'dob': '', 'age': 45, 'year': 1971,
'education': 'I', 'childrenGoToSchool': 'Y'
}
編輯:
如果您只想要特定的列:
print({k: int(v) for k, v in d.items() if k == 'age' or k == 'year' and not math.isnan(v)})
輸出:
{'age': 45, 'year': 1971}

TA貢獻1820條經(jīng)驗 獲得超9個贊
您有一些年齡NaNs在您的列表中。如果這些無法刪除,您可以嘗試將代碼包裝在一個try-except語句中:
num_of_nans = 0
for entry in d:
try:
entry['age'] = int(entry['age'])
except ValueError:
entry['age'] = 'Age not known'
num_of_nans += 1
您可能想要計算 NaN 的數(shù)量,以便了解丟失了多少條目。

TA貢獻1828條經(jīng)驗 獲得超13個贊
你的一些價值觀是NaN. 此外,您錯過了分配操作。
import math
for i in range(len(d)):
if not math.isnan(d[i]['age']):
d[i]['age'] = int(d[i]['age'])
添加回答
舉報