python - 使用 inferred_freq 设置 pandas.tseries.index.DatetimeIndex.freq

标签 python pandas

考虑 DatetimeIndex tidx

tidx = pd.to_datetime(['2016-07-29', '2016-08-31', '2016-09-30'])
print(tidx.freq)
print(tidx.inferred_freq)
print(tidx)

None
BM
DatetimeIndex(['2016-07-29', '2016-08-31', '2016-09-30'], \
              dtype='datetime64[ns]', freq=None)

我希望 freq 属性采用 inferred_freq 属性...所以我

tidx.freq = tidx.inferred_freq
print(tidx)
--------------------------------------------------------------------------- AttributeError                            Traceback (most recent call last) <ipython-input-24-b49b104fda04> in <module>()
      1 tidx.freq = tidx.inferred_freq
----> 2 print(tidx)

C:\Users\ssmith\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\base.pyc in __str__(self)
     45         if compat.PY3:
     46             return self.__unicode__()
---> 47         return self.__bytes__()
     48 
     49     def __bytes__(self):

C:\Users\ssmith\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\core\base.pyc in __bytes__(self)
     57 
     58         encoding = get_option("display.encoding")
---> 59         return self.__unicode__().encode(encoding, 'replace')
     60 
     61     def __repr__(self):

C:\Users\ssmith\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\indexes\base.pyc in __unicode__(self)
    581         klass = self.__class__.__name__
    582         data = self._format_data()
--> 583         attrs = self._format_attrs()
    584         space = self._format_space()
    585 

C:\Users\ssmith\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\tseries\base.pyc in _format_attrs(self)
    485         for attrib in self._attributes:
    486             if attrib == 'freq':
--> 487                 freq = self.freqstr
    488                 if freq is not None:
    489                     freq = "'%s'" % freq

C:\Users\ssmith\AppData\Local\Continuum\Anaconda2\lib\site-packages\pandas\tseries\base.pyc in freqstr(self)
    223         if self.freq is None:
    224             return None
--> 225         return self.freq.freqstr
    226 
    227     @cache_readonly

AttributeError: 'str' object has no attribute 'freqstr'

问题
让我的索引假设它是 inferred_freq 的适当方法是什么?

最佳答案

目前还不清楚为什么文档声明您可以设置 freq 属性,但它不会持续存在,但如果您再次重建 datetimeindex 但传递一个 freq param 然后它起作用:

In [56]:
tidx = pd.DatetimeIndex(tidx.values, freq = tidx.inferred_freq)
tidx

Out[56]:
DatetimeIndex(['2016-07-29', '2016-08-31', '2016-09-30'], dtype='datetime64[ns]', freq='BM')

关于python - 使用 inferred_freq 设置 pandas.tseries.index.DatetimeIndex.freq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222583/

相关文章:

使用 PIL 保存 CMYK tif 图像时 Python.exe 崩溃

python - 修改 globals() 的输出是否安全?

python - pandas add() 两个具有部分重叠索引的数据帧?

python - 当另一列值等于列表中的值之一时更改列的值

python - 如何让我的子弹击中物体后动画

python - 协调两个 celery 任务

python - 如何在python中使用pandas执行字符串替换操作?

python - 组的滚动平均值

python - 如何解析没有日期的时间字符串和没有时间的日期字符串?

python - 在 pandas 数据框中查找具有相同值的行之前的行