我正在使用.astype,但是我在文档中找不到的所有内容都是在转换整个df,而不仅仅是几列。有什么建议吗?
日期:2019-05-13交易量:3.464018e + 08波动率:3.507323e + 09
当我尝试对这些数字进行np计算时,出现错误,指出数字是有限的而不是无限的。所以我想可能是它最终无法识别e + 0,如果转换为int会改变。
谢谢!
答案 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'
。