pandas - 我正在尝试将 DataFrame 中的某些列从浮点数转换为整数
问题描述
我正在使用 .astype 但我在文档中找不到的只是转换整个 df 而不仅仅是几列。有什么建议吗?
日期:2019-05-13 成交量:3.464018e+08 波动率:3.507323e+09
当我尝试对这些数字进行 np 计算时,我得到一个错误,说数字是有限的而不是无限的。所以我在想可能是它最终无法识别 e+0 如果转换为整数会改变。
提前致谢!
解决方案
一种可能的解决方案是astype
方法。
作为参数,您可以传递一个字典“columnName:type”来指定每列的目标类型:
df.astype({'volume': np.int64, 'volatility': np.int64})
作为我使用的测试数据:
data = [['2019-05-13', 3.464018e+08, 3.507323e+09],
['2019-05-14', 3.2024e+08, 3.730523e+09],
['2019-05-15', 3.36706e+08, 3.3246783e+09]]
df = pd.DataFrame(data,columns=['Date','volume', 'volatility'])
转换的结果是:
Date volume volatility
0 2019-05-13 346401800 3507323000
1 2019-05-14 320240000 3730523000
2 2019-05-15 336706000 3324678300
请注意,仅仅int
(或至少可能)是不够的。在这种情况下,数字大小取决于平台的原因。在我的计算机上它是int32
,因此波动率列中的例如值被转换为-2147483648(由于溢出)。
当然,要像我一样明确使用Numpy数据类型,您应该将 numpy 导入为 np。
另一种方法是将目标类型定义为string,在这种情况下只是'int64'
.
推荐阅读
- svg - 如何将使用路径制作的 SVG 圆圈转换为使用圆形对象?
- html - 根据下拉值从另一个数组渲染数组值
- r - 当'breaks'已经被定义时序列x轴标签(R,ggplot)
- oracle - 如何解决 Spark JDBC 的编码问题?
- c# - MS Word AddIn Catch 文档缩放更改
- javascript - Firestore array-contains-any 无法正常工作
- javascript - 如何在Vue中使用scrollBehavior和hash滚动到元素
- arrays - 节点js对象数组常用值求和
- php - Doctrine DQL 查询到 Mysql 查询语法错误
- git - 批准拉取请求将任务更改为自动完成