我正在使用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),它返回了,尽管我以前没有遇到过这个问题,代码也没有任何问题。
感谢您的任何建议,如如何解决或规避它。附言:我正在用最新版本的JupyterLab在Windows10上用Anaconda编写代码,所有这些都是用conda update --all更新的
发布于 2021-08-13 08:35:07
好的,为了完整起见,我想将答案作为答案发布,而不仅仅是在评论中:
我没有仔细查看.dat文件,它的末尾有两个字符串,与旧版本相比,这两个字符串在.dat中是新的。因此,只需在pd.read_csv()的footer参数中说明它或删除它们,自然就解决了将整个列转换为对象而不是int64的问题。
https://stackoverflow.com/questions/68743017
复制相似问题