首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫系列的`.days`访问

熊猫系列的`.days`访问
EN

Stack Overflow用户
提问于 2017-08-02 18:33:53
回答 1查看 3.9K关注 0票数 6

熊猫TimedeltaIndex有一个属性days,可用于与其他正常的dtype (float64等)一起操作:

代码语言:javascript
复制
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被转换为Series (显式地,或作为DataFrame列)时,它将失去这个属性。

代码语言:javascript
复制
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

代码语言:javascript
复制
print(pd.Index(pd.Series(tds)).days)
Int64Index([30, 29, 28, 27, 26, 25, 24, 23, 22, 21], dtype='int64')

有比上面的转换更简单的方法来访问这个属性吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 18:36:46

使用.dt访问器:

代码语言:javascript
复制
print(pd.Series(tds).dt.days)

输出:

代码语言:javascript
复制
0    30
1    29
2    28
3    27
4    26
5    25
6    24
7    23
8    22
9    21
dtype: int64
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45468511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档