我正在使用pandas命令读取.dat文件
'recoil = pd.read_csv('partic_tran_r.dat', engine='python', skiprows=9, sep='\s+')
当我用'recoil.dtypes'
询问数据类型时,我得到以下结果:
pid object
projectile object
species object
gen object
collision object
medium float64
huge float64
fluence float64
...
...
dtype: object
因此,大多数数据类型都被正确识别,但前五种数据类型似乎突然没有被正确识别。
当我试图将dtype=int
修改为read_csv()
中的参数时,我只得到错误消息ValueError: Unable to convert column pid to type <class 'int'>
我以前没有这个问题,我不知道现在和以前有什么不同。 我将其用作int或float的用例是,我希望创建一个唯一的id:
projectile['unique_id'] = projectile['pid'] + projectile['projectile'] * 10
它返回pid=3
和patricle=74
:unique_id=374(74 repeated 10 times)
,尽管我以前没有遇到过这个问题,而且代码运行没有问题
感谢您对如何解决或规避此问题提出的任何建议。
另外,我正在Windows10上Anaconda的JupyterLab的最新版本中编写代码,所有代码都更新为conda update --all
好的,出于完整性考虑,我想将答案作为答案发布,而不仅仅是在评论中:
我没有仔细查看.dat文件,与旧版本相比,.dat文件末尾有两个新字符串。 因此,只要在
pd.read_csv()
的footer
参数中考虑它,或者删除它们,就可以自然地解决将整个列强制转换为对象而不是int64的问题相关问题 更多 >
编程相关推荐