首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何处理作为DatetimeIndex的Expect data.index?

我如何处理作为DatetimeIndex的Expect data.index?
EN

Stack Overflow用户
提问于 2021-04-23 07:43:02
回答 1查看 8.1K关注 0票数 6

我正计划从比特币数据中得到一个烛台图。下面是我在加载csv文件后选择我想要的数据的代码。

代码语言:javascript
运行
复制
df['Date'] = pd.to_datetime(df['Date'])
start_date = '2016-02-27'
end_date = '2021-02-27'
mask = (df['Date'] >= start_date) & (df['Date'] <= end_date)
df = df.loc[mask]
df

然后,我输入了制作烛台情节的代码,如下所示:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
! pip install --upgrade mplfinance
import mplfinance as mpf
import matplotlib.dates as mpl_dates


mpf.plot(df, type = 'candle', style = 'charles',
        title = 'Bitcoin Price',
        ylabel = 'Price (USD$)',
        volume = True,
        ylabel_lower = 'Shares \nTraded',
        mav = (3,6,9),
        savefig = 'chart-mplfinance.png')

上面写着"TypeError: Expect data.index as DatetimeIndex“。所以我在谷歌上找到了解决方案,我试了一下:

代码语言:javascript
运行
复制
df = dict()
df['Date'] = []
df['High'] = []
df['Low'] = []
df['Open'] = []
df['Close'] = []
df['Volume'] = []
for dict in df:
    df['Date'].append(datetime.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
    df['High'].append(dict['High'])
    df['Low'].append(dict['Low'])
    df['Open'].append(dict['Open'])
    df['Close'].append(dict['Close'])
    df['Volume'].append(dict['Vol'])
print("df:", df)
pdata = pd.DataFrame.from_dict(df) 
pdata.set_index('Date', inplace=True)
mpf.plot(pdata)

这一次,它说“无效语法”--我不知道我在哪里弄错了,有什么我错过的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-23 10:21:19

有两种简单的方法可以确保您的dataframe有一个pandas.DatetimeIndex作为dataframe索引:

调用

  1. 时,指示要为索引使用哪一列(应该是包含日期/日期时间的列),并设置kwarg

这将自动将datetime列(通常是csv文件中的字符串)转换为DatetimeIndex对象,并将其设置为索引。

您可以在mplfinance存储库中的示例中看到这一点,在这里您可以在对read_csv()的调用中看到read_csv()

  1. 使用pandas.DatetimeIndex()

例如,而不是你写的东西,

df['Date'] = pd.to_datetime(df['Date'])你会写:

代码语言:javascript
运行
复制
    df.index = pd.DatetimeIndex(df['Date'])

另外需要注意的是,一旦dataframe有了DatetimeIndex,您就不需要在下一节代码中使用mask,而只需将切片如下所示:

代码语言:javascript
运行
复制
start_date = '2016-02-27'
end_date   = '2021-02-27'
df = df.loc[start_date:end_date]

hth。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67225879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档