我有一个dataset,其中pandas.read_csv()处理将一些连续的数值列/特征/变量数据从object适当地强制转换为float64、int64或uint8,而不是其他的。
因此,我尝试使用下面的pandas.to_numeric()调用并指定了int64参数,将本应转换为continuous数字类型的列数据转换为continuous数字类型,但仍然得到了float64结果。
df.wc = pd.to_numeric(df.wc, errors='coerce', downcast='signed')
# call to convert object to int64 vs float64 在尝试将对象类型转换为最具体的连续数值类型时,是否存在典型的列/特征/变量集问题,导致该参数设置被忽略?
发布于 2018-01-31 04:56:38
根据documentation的说法
...将结果数据向下转换为可能的最小数值数据类型。
根据我的实验,可以向下转换为整数值,例如
pd.to_numeric(pd.Series([1.0, 2.0]), downcast='unsigned')
0 1
1 2
dtype: uint8但是,不可能向下转换为整数值,例如
pd.to_numeric(pd.Series([1.1, 2.1]), downcast='unsigned')
0 1.1
1 2.1
dtype: float64如果您希望在结果中获得int64值,则可以应用pd.Series.astype
pd.Series([1.1, 2.1]).astype(int)
0 1
1 2
dtype: int64您可能会感兴趣
发布于 2021-10-14 17:24:54
在使用时
pandas.to_numeric(df[some_column], errors='coerce', downcast='integer')似乎some_column中的任何“不可向下转换”值都会使整个列不会被向下转换。
一个演练是将非数字值的删除和向下转换为符号或整型分开:
df[some_column]=pd.to_numeric(df[some_column], errors='coerce')
df.dropna(subset = [some_column], inplace = True)
df[some_column]=pd.to_numeric(df[some_column], downcast='integer')第一行将非数字值设置为NaN。第二行将它们放在适当的位置。第三行将它们转换为整数。
https://stackoverflow.com/questions/48530210
复制相似问题