怎样对dataframe进行列遍历,将int型变成str型?

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.random_sample(size=(1000,4)),columns=list("ABCD"))
df["d"]=pd.DataFrame([1]*1000,columns=["D"])
print(df.iloc[:,4].dtypes.str)

现在要遍历dataframe的列,碰到int型的变成str型。
我打印了df.iloc[:,4].dtypes.str,显示为<i8.
这是怎么回事,为什么不显示"int"?

我是想对if(df.iloc[:,i].dtypes.str=="int") 就进行转换操作。
image.png

阅读 4.1k
2 个回答

pandas里dtypes是属于series的,也就是每个series里元素的dtype都是相同的,type(series[0])返回的。如果series里混用int和float,最终的dtype还是float,所以你没法用dtype来区分一个series里面的int和float。

series.dtypes返回一个np.dtype对象,str是对应dtype对象的字符串表示,"<i8"代表这是8字节有符号整数。具体每种符号代表什么数据类型可以搜一下numpy.dtype。

比较特殊的是dtype("O"),它返回每个元素对应的python类型

print(df.iloc[:,4].dtypes.name)
'int64'

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题