Python pandas.Panel最佳实践:什么轴应该保存DatetimeIndex?

Python pandas.Panel最佳实践:什么轴应该保存DatetimeIndex?,python,pandas,Python,Pandas,背景 pandas bug详细说明了pandas开发人员假设DatetimeIndex为索引1(长轴)的提示 我有两个面板的主要用例: 时间序列的集合由标签索引,通常访问方式如下:panel.loc[:,'ABC','XYZ'] 按时间索引的数据帧的集合,通常访问方式如下:panel.loc[Timestamp('2011-01-01'),:,:] 在第一种情况下,我们希望内存布局使我们通常访问的序列是内存连续的。在第二种情况下,我们可能希望所访问数据帧的至少一个轴是内存连续的,或者我们可能希望

背景

pandas bug详细说明了pandas开发人员假设
DatetimeIndex
为索引1(长轴)的提示

我有两个面板的主要用例:

  • 时间
    序列的集合
    由标签索引,通常访问方式如下:
    panel.loc[:,'ABC','XYZ']
  • 按时间索引的
    数据帧的集合,通常访问方式如下:
    panel.loc[Timestamp('2011-01-01'),:,:]
  • 在第一种情况下,我们希望内存布局使我们通常访问的序列是内存连续的。在第二种情况下,我们可能希望所访问数据帧的至少一个轴是内存连续的,或者我们可能希望遵循一种约定,尽可能将
    DatetimeIndex
    保持在同一个轴上

    简言之,我们可能更喜欢以“典型”的方式使用面板,因为如果我们的使用与大多数人(特别是pandas开发人员)的使用相匹配,那么我们就更有可能拥有优雅的代码(例如,默认参数工作得更频繁),而不太可能遇到令人惊讶的行为

    问题

  • 哪个轴(如果有)通常包含
    日期时间索引
  • 哪个面板索引是内存连续的

  • .values.flags
    表明它是C连续的(其中数据帧是F连续的)。老实说,在过去,我只是对用例中最快的部分进行了排列和观察。pandas并没有为您的axis假设任何东西。这是一个错误。你需要向我展示你正在对这个小组做什么,我才能在这里给你一个答案。为什么你关心它是否连续(这是一个impl细节)。除了微优化,我不关心内存布局。我希望选择一个大尺寸的系列,其中每个系列都是连续的,速度会快得多,所以很高兴知道。我更感兴趣的是遵循惯例——让我的代码更容易被普通程序员维护。例如,您总是希望数据帧将DatetimeIndex作为索引,而不是列-进行转置会迫使人们重新思考他们的心智模型。除非我有充分的理由,否则我宁愿跟随人群。因为我发现了这个bug,并且unittest工厂在axis=1上创建了一个DatetimeIndex面板,我想我应该问问是否有约定。