Rut*_*ste 5 postgresql null integer nan pandas
我有一个带有“年份”列的熊猫数据框。但是,由于外部合并,某些行具有 np.NaN 值。pandas 中列的数据类型因此转换为 float64 而不是整数(整数不能存储 NaN?)。接下来,我想将数据帧存储在 postGreSQL 数据库上。为此,我使用:
df.to_sql()
Run Code Online (Sandbox Code Playgroud)
一切正常,但我的 postGreSQL 列现在类型为“双精度”,并且 np.NaN 值现在为 [null]。这一切都是有道理的,因为输入列类型是 float64 而不是整数类型。
我想知道是否有一种方法可以将结果存储在带有 [nans] 的整数类型列中。
例子笔记本
阿米的回答结果:
(整数不能存储NaN?)
不,他们不能。如果你查看postgresql numeric 文档,你可以看到字节数和范围是完全指定的,而整数无法存储它。
在这种情况下,常见的解决方案是按照惯例确定某个数字在逻辑上是 nan。就您而言,如果是年份,您可以选择负值(或仅 -1)。在编写之前,您可以使用
df.year = df.year.fillna(-1).astype(int)
Run Code Online (Sandbox Code Playgroud)
或者,您可以将另一列定义为year_is_none。
或者,您可以将它们存储为浮点数。
这些解决方案的范围从内存效率最高到最低。
| 归档时间: |
|
| 查看次数: |
3882 次 |
| 最近记录: |