Python Pandas Groupby删除DateTime列

时间:2014-09-06 01:40:37

标签: python datetime pandas nat

我在包含间歇性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上面,但经过进一步的审查,似乎我的问题实际上在于这些列是timedelta64s。有没有人知道在timedeltas上获得均值/中位数的任何变通办法?

非常感谢您的任何见解!

1 个答案:

答案 0 :(得分:0)

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

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

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

谢谢!