gpt4 book ai didi

python - 访问 `.days` 以获得 pandas 时间增量系列

转载 作者:太空狗 更新时间:2023-10-30 00:01:27 27 4
gpt4 key购买 nike

pandas 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 被转换为 Series(明确地,或作为 DataFrame 列)时,它失去了这个属性。

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')

是否有比上述转换更直接的方法来访问此属性?

最佳答案

使用.dt访问器(accessor):

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

关于python - 访问 `.days` 以获得 pandas 时间增量系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45468511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com