可能是由于以下原因:
- 数据中包含非数字字符:pd.to_numeric函数默认将非数字字符转换为NaN(Not a Number),如果数据中包含非数字字符,转换后的数据类型仍然是object类型。可以通过设置errors参数为'coerce'来强制将非数字字符转换为NaN。
- 数据中包含缺失值:pd.to_numeric函数默认将缺失值转换为NaN,如果数据中包含缺失值,转换后的数据类型仍然是float类型。可以通过设置errors参数为'coerce'来强制将缺失值转换为NaN。
- 数据中包含特殊字符或格式不正确:pd.to_numeric函数要求数据格式正确,如果数据中包含特殊字符或格式不正确,转换后的数据类型仍然是object类型。可以通过预处理数据,去除特殊字符或修正格式,然后再应用pd.to_numeric函数。
- 数据中包含太大或太小的数值:pd.to_numeric函数默认将超出浮点数范围的数值转换为NaN,如果数据中包含太大或太小的数值,转换后的数据类型仍然是float类型。可以通过设置downcast参数为'integer'来将超出整数范围的数值转换为整数类型。
综上所述,如果在多个列上应用pd.to_numeric后,列数据类型没有变化,可以检查数据中是否包含非数字字符、缺失值、特殊字符或格式不正确的情况,并进行相应的处理。另外,还可以尝试设置errors参数为'coerce'或downcast参数为'integer'来强制转换数据类型。