Pandas read_csv突然将int作为对象读取,我无法更改它

2024-10-06 12:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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),尽管我以前没有遇到过这个问题,而且代码运行没有问题

感谢您对如何解决或规避此问题提出的任何建议。 另外,我正在Windows10上Anaconda的JupyterLab的最新版本中编写代码,所有代码都更新为conda update --all


Tags: csvto代码idreadobjectpiddat
1条回答
网友
1楼 · 发布于 2024-10-06 12:18:21

好的,出于完整性考虑,我想将答案作为答案发布,而不仅仅是在评论中:

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

相关问题 更多 >