Python / Pandas / 数据框 / 计算日期差异
Python / Pandas / Data Frame / Calculate date difference
我有一个数据框,我正在做以下事情:
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,数据类型:datetime64[ns]
打印的结果(datum_second_milestone['GeplantesErledigungsdatum']) =
2018-01-02 名称:GeplantesErledigungsdatum,dtype:datetime64[ns]
差值计算结果为:
0 NaT
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)
如果总是 returned 一个值 Series.item
return 标量:
print (datum_first_milestone.item() - datum_second_milestone.item())
如果可能有一个或多个值,则更通用select标量的第一个值:
print (datum_first_milestone.iat[0] - datum_second_milestone.iat[0])
我有一个数据框,我正在做以下事情:
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,数据类型:datetime64[ns]
打印的结果(datum_second_milestone['GeplantesErledigungsdatum']) =
2018-01-02 名称:GeplantesErledigungsdatum,dtype:datetime64[ns]
差值计算结果为:
0 NaT 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)
如果总是 returned 一个值 Series.item
return 标量:
print (datum_first_milestone.item() - datum_second_milestone.item())
如果可能有一个或多个值,则更通用select标量的第一个值:
print (datum_first_milestone.iat[0] - datum_second_milestone.iat[0])