【发布时间】:2014-09-06 01:40:36
【问题描述】:
在包含间歇性 NaT 值的 DataFrame 上使用 groupby.median() 和 groupby.mean() 时遇到了一些问题。具体来说,我在数据集中有几列计算基于其他列的各种时间差。在某些情况下,不存在时差,导致 NaT 值类似于以下示例:
Group Category Start Time End Time Time Diff
A 1 08:00:00.000 08:00:00.500 .500
B 1 09:00:00.000 09:02:00.000 2:00.000
B 1 09:00:00.000 NaT NaT
A 2 09:00:00.000 09:02:00.000 2:00.000
A 2 09:00:00.000 09:01:00.000 1:00.000
A 2 08:00:00.000 08:00:01.500 1.500
每当我运行 df.groupby(['Group', 'Category'].median() 或 .mean() 时,任何包含 NaT 的列都会从结果集中删除。我尝试了fillna,但 NaT 似乎仍然存在。作为附加的上下文,此脚本在旧版本的 Anaconda Python (1.x) 中正常工作。我最近能够将我的工作计算机升级到 2.0.1,此时此问题开始蔓延。
编辑:如果 NaT 是一个因素,我会将我对 NaT 的想法放在上面,但经过进一步审查,我的问题似乎实际上在于这些列是 timedelta64s 的事实。有谁知道在 timedeltas 上获得平均值/中位数的任何解决方法?
非常感谢您提供的任何见解!
【问题讨论】:
-
你有什么版本的熊猫?
-
@joris 我有熊猫 0.14.0。我确实想出了一个解决方法 - 请参阅下面的回复。
标签: python datetime pandas nat