无法更改 dtype 熊猫 python



我正在使用pandas中的数据帧,并且我有一个数据类型为int64的列。 我需要将此数据类型转换为字符串,以便我可以对字符进行切片,取 3 个字符列的前 5 个字符。 代码如下:

trainer_pairs[:, 'zip5'] = trainer_pairs.zip5.astype(dtype='object')
trainer_pairs.zip5.dtype
dtype('O')

我已经确认数据类型是object,但是当我尝试在列上使用str.slice()时,我仍然得到这个:

0      NaN
1      NaN
2      NaN
3      NaN
4      NaN
5      NaN
6      NaN
7      NaN

如何成功更新数据类型,以便可以运行此字符串方法?

在这里你应该使用astype(str)

trainer_pairs['zip5'] = trainer_pairs.zip5.astype(str)

关于您的错误

df=pd.DataFrame({'zip':[1,2,3,4,5]})
df.zip.astype(object)
Out[4]: 
0    1
1    2
2    3
3    4
4    5
Name: zip, dtype: object

即使转换为对象,它们仍然int,使用类型intfloat执行切片将返回值NaN

请检查
df.zip.astype(object).apply(type)
Out[5]: 
0    <class 'int'>
1    <class 'int'>
2    <class 'int'>
3    <class 'int'>
4    <class 'int'>
Name: zip, dtype: object
df.zip.astype(str).apply(type)
Out[6]: 
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
4    <class 'str'>
Name: zip, dtype: object

最新更新