Python Pandas通过删除DateTime列进行分组



在包含间歇性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是一个因素,我会把我对它们的想法留在上面,但经过进一步的审查,我的问题似乎实际上在于这些列是时间增量64。有人知道有什么办法可以获得时间增量的平均值/中值吗?

非常感谢您的任何见解!

经过进一步的谷歌搜索/实验,我确认该问题似乎与timedelta64列有关。为了对这些列执行pd.groupby,我首先将它们转换为浮动,如下所示:

df['End Time'] = df['End Time'].astype('timedelta64[ms]') / 86400000

可能有一个更优雅的解决方案,但这让我能够继续进行分析。

谢谢!

最新更新