Python /熊猫/数据框/计算日期差

约翰·多尔

我有一个数据框,并且正在执行以下操作:

def calculate_planungsphase(audit, phase1, phase2):

datum_first_milestone = data_audit[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase1)]
datum_second_milestone = data_audit[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase2)]

print(datum_first_milestone['GeplantesErledigungsdatum'])
print(datum_second_milestone['GeplantesErledigungsdatum'])

print(datum_first_milestone['GeplantesErledigungsdatum'] - datum_second_milestone['GeplantesErledigungsdatum'])

打印结果(datum_first_milestone ['GeplantesErledigungsdatum'])=

2018-01-01名称:计划完成日期,dtype:datetime64 [ns]

打印结果(datum_second_milestone ['GeplantesErledigungsdatum'])=

2018-01-02名称:计划完成日期,dtype:datetime64 [ns]

差异计算的结果是:

0 NaT 1 NaT名称:GeplantesErledigungsdatum,dtype:timedelta64 [ns

为什么计算结果为NaT?当我仅进行一次计算时,为什么会有两个结果?(索引0和索引1 = NaT)

谢谢您的帮助!

耶斯列尔

存在索引值不同的问题,因此在减法Series中未对齐。

如果两个filter的大小相同,则可能的解决方案Series是创建相同的索引值:

datum_first_milestone.index = datum_second_milestone.index

如果只需要用loc+过滤列,则解决方案也应简化column name

datum_first_milestone = data_audit.loc[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase1), 'GeplantesErledigungsdatum']
datum_second_milestone = data_audit.loc[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase2), 'GeplantesErledigungsdatum']

print(datum_first_milestone)
print(datum_second_milestone)

如果始终返回一个值,则Series.item返回标量:

print (datum_first_milestone.item() - datum_second_milestone.item())

如果可能存在一个或多个值,则更一般地说,为标量选择第一个值:

print (datum_first_milestone.iat[0] - datum_second_milestone.iat[0])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章