首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas to_numeric downcast='signed‘返回float64

pandas to_numeric downcast='signed‘返回float64
EN

Stack Overflow用户
提问于 2018-01-31 04:44:15
回答 2查看 5K关注 0票数 2

我有一个dataset,其中pandas.read_csv()处理将一些连续的数值列/特征/变量数据从object适当地强制转换为float64、int64或uint8,而不是其他的。

因此,我尝试使用下面的pandas.to_numeric()调用并指定了int64参数,将本应转换为continuous数字类型的列数据转换为continuous数字类型,但仍然得到了float64结果。

代码语言:javascript
复制
df.wc = pd.to_numeric(df.wc, errors='coerce', downcast='signed') 
# call to convert object to int64 vs float64 

在尝试将对象类型转换为最具体的连续数值类型时,是否存在典型的列/特征/变量集问题,导致该参数设置被忽略?

EN

回答 2

Stack Overflow用户

发布于 2018-01-31 04:56:38

根据documentation的说法

...将结果数据向下转换为可能的最小数值数据类型。

根据我的实验,可以向下转换为整数值,例如

代码语言:javascript
复制
pd.to_numeric(pd.Series([1.0, 2.0]), downcast='unsigned')
0    1
1    2
dtype: uint8

但是,不可能向下转换为整数值,例如

代码语言:javascript
复制
pd.to_numeric(pd.Series([1.1, 2.1]), downcast='unsigned')
0    1.1
1    2.1
dtype: float64

如果您希望在结果中获得int64值,则可以应用pd.Series.astype

代码语言:javascript
复制
pd.Series([1.1, 2.1]).astype(int)
0    1
1    2
dtype: int64

您可能会感兴趣

票数 3
EN

Stack Overflow用户

发布于 2021-10-14 17:24:54

在使用时

代码语言:javascript
复制
pandas.to_numeric(df[some_column], errors='coerce', downcast='integer')

似乎some_column中的任何“不可向下转换”值都会使整个列不会被向下转换。

一个演练是将非数字值的删除和向下转换为符号或整型分开:

代码语言:javascript
复制
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。第二行将它们放在适当的位置。第三行将它们转换为整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48530210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档