如何从数据框中正确设置X轴日期的格式?

时间:2019-03-21 21:19:02

标签: python datetime dataframe matplotlib

enter image description here

我正在努力处理数据帧中的时间图。经过多次尝试和几乎所有的错误,我只用set_xtickslabels绘制了刻度线,但日期与图表不匹配...在每个打印的刻度线上显示了列表中的下一项。并且,当指向图表日期时,其格式也不正确。这不是惊奇,因为用float绘制了这个。通过堆栈论坛上的所有这些阅读,我知道那个日期是一个对象,并试图以多种方式对其进行格式化,但仍未得到正确的解决方案。那么如何正确执行或在哪里寻找解决方案呢?

这是我遇到的困难和错误的历史(肯定不是全部):

def getCandles(df, ax):
    ohlc = df[['open_time','o', 'h', 'l', 'c', 'v']].copy()
    ohlc['open_time'] = ohlc['open_time'].values.astype(float)
    ohlc['o'] = ohlc['o'].astype(float)
    ohlc['h'] = ohlc['h'].astype(float)
    ohlc['l'] = ohlc['l'].astype(float)
    ohlc['c'] = ohlc['c'].astype(float)
    ohlc['v'] = ohlc['v'].astype(float)
    candlestick_ohlc(ax, ohlc.values, width = 0.8, colorup="#77d879", colordown="#db3f3f")

    plt.xlabel('TIME')
    plt.ylabel('PRICE')
    plt.tight_layout() 
    plt.show()

编辑:我在这里找到了解决方案:https://stackoverflow.com/a/41822115/6635518

谢谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

您正在将所有内容都转换为浮点值,包括open_time

由于您的日期格式是以毫秒为单位的纪元,因此下面的代码将纪元转换为日期时间字符串。

    # Datetime from epoch in milliseconds
    ohlc['open_time'] = pd.to_datetime(ohlc['open_time'], unit='ms')

示例 enter image description here

Check the docs以匹配日期格式。