Python/Pandas/数据帧/计算日期差

2024-06-16 11:40:54 发布

您现在位置: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'])

打印结果(基准\u第一个\u里程碑['GeplantesErledigungsdatum'])=

2018年1月1日 名称:GeplantesErledigungsdatum,数据类型:datetime64[ns]

打印结果(基准\u第二个\u里程碑['GeplantesErledigungsdatum'])=

2018-01-02姓名:GeplantesErledigungsdatum,数据类型:datetime64[ns]

差值计算结果为:

0奈特 1纳特 名称:GeplantesErledigungsdatum,数据类型:timedelta64[ns

为什么计算结果是NaT?为什么我只有两个结果,而我只做一个计算(索引0和索引1=NaT)

谢谢你的帮助


Tags: data基准auditfirst数据类型printnssecond
1条回答
网友
1楼 · 发布于 2024-06-16 11:40:54

存在不同索引值的问题,因此在减法中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)

如果总是返回一个值^{}返回标量:

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

更一般如果可能有一个或多个值,请为标量选择第一个值:

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

相关问题 更多 >