我正在尝试将DataFrame中的某些列从float转换为整数

时间:2019-05-19 01:30:53

标签: pandas type-conversion

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

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

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

谢谢!

1 个答案:

答案 0 :(得分: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'