【发布时间】:2019-08-12 16:23:47
【问题描述】:
我正在使用 Pandas 数据框。我有一个来自 CSV 的列,它是与空值混合的整数。
我正在尝试将其转换并以尽可能通用的方式将其插入 Spanner(因此我可以将相同的代码用于未来的工作),这降低了我使用哨兵变量的能力。但是,DF 无法在纯 int 列中处理 NaNs,因此您必须使用 Int64。当我尝试将其插入 Spanner 时,我收到一个错误,指出它不是 int64 类型,而纯 Python ints 确实有效。在插入过程中是否有自动方法将 Int64 Pandas 值转换为 int 值?由于空值,在插入之前转换列也不起作用。是否有其他解决方法?
尝试从系列转换如下:
>>>s2=pd.Series([3.0,5.0])
>>>s2
0 3.0
1 5.0
dtype: float64
>>>s1=pd.Series([3.0,None])
>>>s1
0 3.0
1 NaN
dtype: float64
>>>df = pd.DataFrame(data=[s1,s2], dtype=np.int64)
>>>df
0 1
0 3 NaN
1 3 5.0
>>>df = pd.DataFrame(data={"nullable": s1, "nonnullable": s2}, dtype=np.int64)
最后一条命令产生错误ValueError: Cannot convert non-finite values (NA or inf) to integer
【问题讨论】:
标签: python pandas google-cloud-platform google-cloud-spanner