无法将Dtype'O'更改为数据帧中的str

时间:2019-06-26 05:16:40

标签: python-3.x pandas numpy dataframe dtype

从CSV文件中导入了大量数据,Pandas自动将dtype分配给了colums(138),我必须比较一列以提取结果。

我尝试使用astype()apply()方法更改栏,但没有成功。

我在下面尝试过此操作

In [78]: df['PDP_ADDIPV4_01']=df['PDP_ADDIPV4_01'].astype(str,errors='ignore')
         df['PDP_ADDIPV4_01'].dtype
Out[78]: dtype('O')

In [79]: df['PDP_ADDIPV4_01']=df['PDP_ADDIPV4_01'].astype('str',errors='ignore')
         df['PDP_ADDIPV4_01'].dtype
Out[79]: dtype('O')


In [49]: df['PDP_ADDIPV4_01'].dtype
Out[49]: dtype('O')

In [50]: df['PDP_ADDIPV4_01']=df['PDP_ADDIPV4_01'].astype(int,errors='ignore')
         df['PDP_ADDIPV4_01'].dtype
Out[50]: dtype('O')

In [51]: 
     df['PDP_ADDIPV4_01']=df['PDP_ADDIPV4_01'].astype('int',errors='ignore')
     df['PDP_ADDIPV4_01'].dtype
Out[51]: dtype('O')

它不会显示任何错误,但也不会更改列中的dtype。对于整数或字符串,它不变。

1 个答案:

答案 0 :(得分:1)

如果可以使用pandas 0.24+,则可以将非数字转换为to_numeric的缺失值,然后将Nullable Integer Data Type转换为整数,如果需要将列转换为整数:

df['PDP_ADDIPV4_01']= pd.to_numeric(df['PDP_ADDIPV4_01'],errors='coerce').astype('Int64')

但是,如果需要字符串,则dtype为object,则显然意味着strings。因此无需转换。