0

我已经撞了半天了。在数据管道中,我想将新数据与现有数据集合并。我已经使用 Pandas .concat() 完成了这项工作,这工作正常,但在内存上有点沉重。由于 Vaex 有内存映射,我想我试一试,但我收到以下错误消息:

TypeError: Cannot promote timestamp[us] and timestamp[ns] to a common type

尝试连接两个数据帧时:

vx.concat([d1, vx.from_pandas(d2)])

使用显示检查两个数据帧.dtype是列都是 datetime64[ns] 类型。我使用 .to_datetime() 解析日期,它在后台使用 Numpy 的 datetime64。

有趣的是,在查看数据时,它们的打印方式不同:

In [227]: vx.from_pandas(d2).timestamp
Out[227]:
Expression = timestamp
Length: 248 dtype: datetime64[ns] (column)
------------------------------------------
  0  2021-06-24 12:13:13.653000000
  1  2021-06-24 20:39:07.993000000
  2  2021-06-24 22:10:43.103000000
  3  2021-06-24 08:20:52.563000000
  4  2021-06-24 13:09:57.723000000
               ...
243  2021-06-24 20:18:34.453000000
244  2021-06-24 21:21:19.413000000
245  2021-06-24 12:07:58.853000000
246  2021-06-24 12:08:00.383000000
247  2021-06-24 07:44:02.420000000

和另一个:

In [228]: d1.timestamp
Out[228]:
Expression = timestamp
Length: 33,152 dtype: datetime64[ns] (column)
---------------------------------------------
    0  2021-01-01 22:41:08.537000
    1  2021-01-01 22:08:10.983000
    2  2021-01-01 22:07:02.937000
    3  2021-01-01 22:05:46.773000
    4  2021-01-01 22:05:15.980000
               ...
33147  2021-06-24 20:18:34.453000
33148  2021-06-24 21:21:19.413000
33149  2021-06-24 12:07:58.853000
33150  2021-06-24 12:08:00.383000
33151  2021-06-24 07:44:02.420000

所以它肯定看起来是否存在不匹配,但我不知道如何解决它。看起来 Vaex 读取时间戳的方式与 Pandas 不同。我想要实现的是合并两个具有最小内存占用的镶木地板文件。这意味着,由于我不想将其加载到内存中,因此不会更改 D1 数据帧。

我的版本:Python:3.9.5 Vaex:4.3.0 Pandas:1.3.0

任何帮助,将不胜感激。

4

0 回答 0