首页 > 解决方案 > 我正在尝试将 DataFrame 中的某些列从浮点数转换为整数

问题描述

我正在使用 .astype 但我在文档中找不到的只是转换整个 df 而不仅仅是几列。有什么建议吗?

日期:2019-05-13 成交量:3.464018e+08 波动率:3.507323e+09

当我尝试对这些数字进行 np 计算时,我得到一个错误,说数字是有限的而不是无限的。所以我在想可能是它最终无法识别 e+0 如果转换为整数会改变。

提前致谢!

标签: pandastype-conversion

解决方案


一种可能的解决方案是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'.


推荐阅读