从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。对于整数或字符串,它不变。
答案 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。因此无需转换。