我正在使用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)
,虽然我以前没有这个问题,代码工作没有问题。
谢谢你的任何建议,如何解决这个问题或绕过它。P.S.我正在用最新版本的JupyterLab在Windows10上的Anaconda中编写代码,所有代码都更新为conda update --all
好的,所以只是出于完整性,我想把答案作为答案发布,而不仅仅是在评论中:
我没有仔细查看。dat文件,它的末尾有两个字符串,与旧版本相比,这两个字符串在。dat文件中是新的。因此,简单地在pd.read_csv()
的footer
参数中考虑它或删除它们自然解决了将整个列转换为非int64对象的问题。