Pandas数据系列如何解决日差

2024-09-30 08:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧导航表,它的索引是一系列的日期。在

我需要找出索引中连续日期之间的差异

                 Delta  
2016-08-10       0.006619  
2016-08-12       0.006595  
2016-08-14       0.006595  
2016-08-17       0.006595  
2016-08-18       0.006595 

我想要一个新的列Days_Diff,这将使我在随后的日期(在索引中)有区别。所以我的输出应该是这样的

^{pr2}$

我先试试这个:

navTable['Index'] = navTable.index
navTable['Days_Diff'] = navTable['Index'] - navTable['Index'].shift(1)
navTable['Delta_Days'] = navTable['Days_Diff'].days

直截了当地说,这是不被接受的,因为它是抱怨“天不能适用于系列”

所以,我试了一下:

navTable['Index'] = navTable.index
navTable['Days_Diff'] = navTable['Index'] - navTable['Index'].shift(1)
navTable['Delta_Days'] = [ eachDayDiff.days for eachDayDiff in list(dataTable['Days_Diff']) ]

可以理解的是,它在抱怨第一个带有is Null的元素。在

'NaTType' object has no attribute 'days'

问题1)我是否有效地处理了这种情况? 问题2)如何解决

'NaTType' object has no attribute 'days'

对于记录,第一个元素的类型是pandas.tslib.NaTType 其余类型为pandas.tslib.Timedelta

编辑:格式


Tags: no元素indexshiftobjectdiffattributedays
1条回答
网友
1楼 · 发布于 2024-09-30 08:33:58

通常,您将使用diff()函数来计算相邻的差异,您可以将索引转换为普通序列,然后使用diff()函数,该函数给出一系列time delta数据类型:

df.index.to_series().diff()

# 2016-08-10      NaT
# 2016-08-12   2 days
# 2016-08-14   2 days
# 2016-08-17   3 days
# 2016-08-18   1 days
# dtype: timedelta64[ns]

要将时间增量数据类型转换为数字类型,请执行以下操作:

^{pr2}$

相关问题 更多 >

    热门问题