【问题标题】:between_time not working on a pandas panelbetween_time 在熊猫面板上不起作用
【发布时间】:2014-11-17 13:06:04
【问题描述】:

方法 between_time 是在 pandas 面板对象中定义的,我希望此方法适用于面板中的所有数据框,但这不起作用。那么这个方法是做什么的呢?

例子

rng = pd.date_range('1/1/2013',periods=100,freq='D')
data = np.random.randn(100, 4)
cols = ['A','B','C','D']
df1, df2, df3 = pd.DataFrame(data, rng, cols), pd.DataFrame(data, rng, cols), pd.DataFrame(data, rng, cols)
pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})
pf.between_time('08:00:00', '09:00:00')

以上代码返回此错误

Traceback(最近一次调用最后一次):文件“”,第 1 行,in 文件 "/usr/lib64/python2.7/site-packages/pandas-0.14.0-py2.7-linux-x86_64.egg/pandas/core/generic.py", 第 2796 行,在 between_time raise TypeError('Index must be DatetimeIndex') TypeError: Index must be DatetimeIndex

【问题讨论】:

    标签: python pandas indexing panel


    【解决方案1】:

    您实际上没有任何时间可以选择,所以我稍微更改了您的示例(您使用的是 D 频率)

    In [17]: rng = pd.date_range('1/1/2013',periods=100,freq='H')
    
    In [18]: data = np.random.randn(100, 4)
    
    In [19]: df1, df2, df3 = pd.DataFrame(data, rng, cols), pd.DataFrame(data, rng, cols), pd.DataFrame(data, rng, cols)
    
    In [20]: pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})
    
    In [21]: pf
    Out[21]: 
    <class 'pandas.core.panel.Panel'>
    Dimensions: 3 (items) x 100 (major_axis) x 4 (minor_axis)
    Items axis: df1 to df3
    Major_axis axis: 2013-01-01 00:00:00 to 2013-01-05 03:00:00
    Minor_axis axis: A to D
    

    axis参数暂时没有实现,可以这样操作:

    In [22]: indexer = pf.major_axis.indexer_between_time('08:00','09:00')
    
    In [23]: pf.take(indexer,axis='major')
    Out[23]: 
    <class 'pandas.core.panel.Panel'>
    Dimensions: 3 (items) x 8 (major_axis) x 4 (minor_axis)
    Items axis: df1 to df3
    Major_axis axis: 2013-01-01 08:00:00 to 2013-01-04 09:00:00
    Minor_axis axis: A to D
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 2017-12-29
    • 2015-12-24
    • 2019-04-21
    • 2017-11-23
    相关资源
    最近更新 更多