3 回答
TA贡献1836条经验 获得超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条经验 获得超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 的数量,以便了解丢失了多少条目。
TA贡献1828条经验 获得超13个赞
你的一些价值观是NaN. 此外,您错过了分配操作。
import math
for i in range(len(d)):
if not math.isnan(d[i]['age']):
d[i]['age'] = int(d[i]['age'])
添加回答
举报