如何从多索引中提取总年份行和列以在绘图中创建直方图

Posted

技术标签:

【中文标题】如何从多索引中提取总年份行和列以在绘图中创建直方图【英文标题】:How to extract total year rows and columns from multiindex to create histograms in plotly 【发布时间】:2021-09-10 01:42:04 【问题描述】:

如何创建数据框以显示每年的每日数据以绘制直方图?

                                Open        High        Low         Close       Volume      
   Date                         
   2019-06-26                  81.478964    81.789175   80.102395   80.422302   5731400  
   2019-06-27                  80.839148    81.411104   80.528937   81.129974   4111600 
   2019-06-28                  81.255994    81.682537   80.577409   81.527428   16436700
   .....
   2020-12-31                  81.255994    81.682537   80.577409   81.527428   16436700

我希望 2019 年数据框的输出包含 2019 年的所有交易,而我的其他数据框则包含 2020 年的所有交易

【问题讨论】:

看看这个答案***.com/a/61339028/3376059 最后一个建议的选项将允许您按年份过滤,我希望这就是您所要求的(所以如果没有,可以做更多的阐述)。另外,请提供一种重新创建数据框的方法。 您能否更具体一点,您要绘制 OHLC 的哪些值?您有期望的输出示例吗? @OmerM25 这正是我想要的。我要删除我的问题吗? 【参考方案1】:

由于您有日期时间索引,您可以使用DatetimeIndex.year 获取索引的年份来过滤年份,如下所示:

df_2019 = df.loc[df.index.year == 2019]
df_2020 = df.loc[df.index.year == 2020]

你也可以使用:

df_2019 = df.loc['2019-01-01':'2019-12-31']
df_2020 = df.loc['2020-01-01':'2020-12-31']

【讨论】:

【参考方案2】:

试试

d = x : y for x , y in df.groupby(df.index.year)

【讨论】:

以上是关于如何从多索引中提取总年份行和列以在绘图中创建直方图的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值

如何使用行和列以圆形方式表示数据

熊猫数据框检查索引是不是存在于多索引中

Pandas 多索引行和列:用匹配行中的值替换 NaN

将 numpy 数组复制到 Panda 多索引中(大小相同)

在多索引中移动时间以合并