首页 > 解决方案 > Pandas DatetimeIndex.weekday 应该返回索引还是 numpy 数组?

问题描述

我有一个 PandasDatetimeIndex对象(从数据框的索引中获得),我需要每个元素的工作日。我一直Python 3.6.5在 Windows 上使用(64 位)运行它,并使用Pandas 0.22.0并获取一个Int64Index对象:

例如

In:
    ts = pd.DatetimeIndex([['2013-01-01 00:00:00', '2013-01-01 00:30:00',
               '2013-01-02 01:00:00', '2013-01-02 01:30:00',
               '2013-01-03 02:00:00', '2013-01-03 02:30:00',
               '2013-01-04 03:00:00', '2013-01-04 03:30:00',
               '2013-01-05 04:00:00', '2013-01-05 04:30:00']])
    ts.weekday

Out:
    Int64Index([1, 1, 2, 2, 3, 3, 4, 4, 5, 5], dtype='int64')

我现在正在运行脚本,pythonanywhere其中 hasPython 3.6.0并且Pandas 0.19.2结果作为数组返回:

In:        
    ts = pd.DatetimeIndex(['2013-01-01 00:00:00', '2013-01-01 00:30:00',
                    '2013-01-02 01:00:00', '2013-01-02 01:30:00',
                    '2013-01-03 02:00:00', '2013-01-03 02:30:00',
                    '2013-01-04 03:00:00', '2013-01-04 03:30:00',
                    '2013-01-05 04:00:00', '2013-01-05 04:30:00'])
        ts.weekday
    Out:
        array([1, 1, 2, 2, 3, 3, 4, 4, 5, 5], dtype=int32)

是否可以编写此代码以Index在两个平台上返回相同的结果(理想情况下是一个对象)?

标签: pythonpandasdatetimeindex

解决方案


此行为在最近的更新中已更改为返回 apd.Index而不是数组。为了向后兼容,您始终可以Int64Index根据需要将结果转换为 a。

>>> pd.Index(ts.weekday, dtype=np.int64)
Int64Index([1, 1, 2, 2, 3, 3, 4, 4, 5, 5], dtype='int64')

推荐阅读