Python中用//运算符生成DataFrame整数列却得到浮点数的问题
为什么DataFrame中用
// 365.得到浮点数结果? 核心原因是你使用了**浮点数365.**作为除数,pandas的算术运算遵循"向上转型"规则:只要参与运算的操作数中有一个是浮点数类型,运算结果就会自动转为浮点数——哪怕你用的是整数除法//。
比如如果你的df['Days']是整数列,当它和365.(浮点数)执行//运算时,整个运算的结果类型会被提升为浮点数,所以最终得到13.0这类带小数位的格式。
解决办法
- 直接将除数改为整数
365,整数列与整数做整数除法,结果会是整数类型:df['Years'] = df['Days'] // 365 - 若需要保留
365.的写法,也可以用astype()强制转换结果类型:df['Years'] = (df['Days'] // 365.).astype(int)
内容的提问来源于stack exchange,提问作者Yorgin Pada
相关产品推荐
相关产品推荐

