代码之家  ›  专栏  ›  技术社区  ›  Brad Solomon

正在访问“”。熊猫系列时间差的天数

  •  6
  • Brad Solomon  · 技术社区  · 7 年前

    A熊猫 TimedeltaIndex days float64 等):

    import pandas as pd
    from pandas.tseries import offsets
    idx1 = pd.date_range('2017-01', periods=10)
    idx2 = idx1 + offsets.MonthEnd(1)
    tds = idx2 - idx1
    
    print(tds.days - 2)
    Int64Index([28, 27, 26, 25, 24, 23, 22, 21, 20, 19], dtype='int64')
    

    tds

    print(pd.Series(tds).days)
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-115-cb20b4d368f4> in <module>()
    ----> 1 print(pd.Series(tds).days)
    
    C:\Users\bsolomon\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
       3079             if name in self._info_axis:
       3080                 return self[name]
    -> 3081             return object.__getattribute__(self, name)
       3082 
       3083     def __setattr__(self, name, value):
    
    AttributeError: 'Series' object has no attribute 'days'
    

    和访问 .days 需要转换回 Index

    print(pd.Index(pd.Series(tds)).days)
    Int64Index([30, 29, 28, 27, 26, 25, 24, 23, 22, 21], dtype='int64')
    

    有没有比上面的转换更直接的方法来访问这个属性?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Scott Boston    7 年前

    使用 .dt 访问者:

    print(pd.Series(tds).dt.days)
    

    0    30
    1    29
    2    28
    3    27
    4    26
    5    25
    6    24
    7    23
    8    22
    9    21
    dtype: int64