pandas astype()方法不生效,如何修改DataFrame的object数据类型?
问题原因
你使用astype(str)转换后仍显示object类型,是因为在pandas的默认映射规则里,Python原生的str类型会被归类到object dtype,该dtype本来就是用来存储变长字符串、Python对象等内容的,并非转换没生效。
解决方案
- 如果你需要使用pandas专属的字符串类型(pandas 1.0及以上版本支持),直接指定dtype为
string即可:
df['Title'] = df['Title'].astype('string')
执行后再次查看df.dtypes就能看到Title列的类型变为string。专属字符串类型相比object类型可以更好地区分字符串缺失值和普通字符串,同时支持更多字符串专属的优化方法。
- 如果你使用的pandas版本低于1.0,或者没有特殊需求,现存的object类型完全可以正常支持所有字符串相关操作,不需要额外处理。
常见问题排查
如果转换后仍不符合预期,可以先检查列内元素类型是否统一,执行以下命令即可查看:
df['Title'].apply(type).value_counts()
另外不需要先保存数据再重新读取,直接在现有DataFrame上操作即可。
内容的提问来源于stack exchange,提问作者PJj
相关产品推荐
相关产品推荐

