我有一个数据框,并且正在执行以下操作:
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
名称:GeplantesErledigungsdatum,dtype:datetime64 [ns]
打印结果(datum_second_milestone ['GeplantesErledigungsdatum'])=
2018-01-02名称:GeplantesErledigungsdatum,dtype:datetime64 [ns]
差异计算的结果是:
0钠
1钠
名称:GeplantesErledigungsdatum,dtype:timedelta64 [ns
为什么计算结果为NaT?当我仅进行一次计算时,为什么会有两个结果? (索引0和索引1 = NaT)
谢谢您的帮助!
最佳答案
存在索引值不同的问题,因此在减法中Series
未对齐。
如果两个过滤后的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])
关于python - Python/ Pandas /数据框/计算日期差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50759380/