我正在使用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
,使用类型int
或float
执行切片将返回值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