我在包含间歇性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,此时此问题开始逐渐增加。
非常感谢您的任何见解!
答案 0 :(得分:0)
经过一些进一步的谷歌搜索/实验后,我确认该问题似乎与timedelta64
的列有关。为了在这些列上执行pd.groupby
,我首先将它们转换为浮点数,如下所示:
df['End Time'] = df['End Time'].astype('timedelta64[ms]') / 86400000
可能有更优雅的解决方案,但这使我能够继续进行分析。
谢谢!