【问题标题】:np.vstack() with datetime and float data types具有日期时间和浮点数据类型的 np.vstack()
【发布时间】:2021-02-05 00:25:33
【问题描述】:

我有一个带有日期时间元素('date')和浮点数('cups)的 Pandas 数据框,我想知道是否有任何方法可以使用 np.vstack() 来堆叠这两个元素。

以前,我已将日期时间元素转换为浮点数并使用vstack() 没有问题。但是,我正在使用xx 来更新带有滑块的散点图,并且由于我希望绘图使用日期,因此不能再使用此方法。

xx = np.vstack((df['date'], df['cups']))
scat.set_offsets(xx.T)

我看到有一个类似的问题,但我不确定如何根据我的情况调整那里给出的答案:Can ndarray store datetime and float?

由于最终目标是以正确的结构调用set_offsets,因此解决方案不需要使用vstack。我只是不确定如何在不使用vstack 的情况下获得set_offsets 需要的结构。

【问题讨论】:

  • 一个 numpy 数组不能存储 dtypes 的混合,除非你创建一个 structured 数组。为什么不坚持使用列中可以有不同 dtype 的数据框?我们不知道这个偏移函数是什么,或者它需要什么。
  • 这个偏移函数接受什么?
  • 抱歉,假设背景知识太多。 set_offestsax.scatter 的函数。链接here 的示例显示了它的一种用途。我更多地按照this 示例的方式使用它,这就是为什么@hpaulj,我不确定坚持使用数据框是否适合我的情况。我错过了什么吗?
  • scat.get_offsets() 产生什么?这与您最初用于创建散点图的数组相比如何?
  • 当我用dates 轴试验一个简单的scatter 时,get_offsets 给出了一个带有浮点值的掩码数组。日期已转换为浮点值。我相信您的set_offsets 值也需要这样做。

标签: arrays numpy dtype


【解决方案1】:

解决了!感谢@hpaulj 的指针。我错误地假设scat.set_offsets() 需要日期时间输入来绘制带有日期的图,因此可以防止传递浮点数。然而,事实证明,日期散点图可以接受传递给 set_offsets 的浮点数,并且仍能正确显示数据。

我已通过以下方式转换了相关列:

df.loc[:, 'date'] = df['date'].map(lambda x: matplotlib.dates.date2num(x)).

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 2019-02-15
    • 2014-04-02
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多