熊猫read_csv突然在 int 中读取为对象,我无法更改它



我正在使用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=3patricle=74:unique_id=374(74 repeated 10 times),虽然我以前没有这个问题,代码工作没有问题。

谢谢你的任何建议,如何解决这个问题或绕过它。P.S.我正在用最新版本的JupyterLab在Windows10上的Anaconda中编写代码,所有代码都更新为conda update --all

好的,所以只是出于完整性,我想把答案作为答案发布,而不仅仅是在评论中:

我没有仔细查看。dat文件,它的末尾有两个字符串,与旧版本相比,这两个字符串在。dat文件中是新的。因此,简单地在pd.read_csv()footer参数中考虑它或删除它们自然解决了将整个列转换为非int64对象的问题。

最新更新