Shu*_*m R 4 python types dataframe pandas
我有一个 Excel 文件,我将其作为 pandas 数据框导入。
我的数据框df:
id name value
1 abc 22.3
2 asd 11.9
3 asw 2.4
Run Code Online (Sandbox Code Playgroud)
我有一本字典d,格式为:
{ 'name' : 'str',
'value' : 'float64',
'id' : 'int64'}
Run Code Online (Sandbox Code Playgroud)
我想检查数据框中列的数据类型是否与字典中定义的相同。
输出可以只是一个字符串,如果所有列都有各自的数据类型,
print("Success")
else:
print(" column id has different data type.Please check your file)"
Run Code Online (Sandbox Code Playgroud)
调用dtypes,转换为字典并进行比较。
d1 = df.dtypes.astype(str).to_dict()
d1
{'id': 'int64', 'name': 'object', 'value': 'float64'}
d1 == {'name' : 'str', 'value' : 'float64', 'id' : 'int64'}
False
Run Code Online (Sandbox Code Playgroud)
不幸的是,name显示为一object列,而不是str,因此是False。我可以建议对你的字典进行快速迭代并更改str似乎的所有条目object(这应该不会造成伤害):
d2 = {k : 'object' if v == 'str' else v for k, v in d2.items()}
d2
{'id': 'int64', 'name': 'object', 'value': 'float64'}
d1 == d2
True
Run Code Online (Sandbox Code Playgroud)
要检查哪些列不正确,解决方案变得更加复杂,但通过列表理解仍然很容易。
[k for k in d1 if d1[k] != d2.get(k)]
['name']
Run Code Online (Sandbox Code Playgroud)