好的,我有一个带有Timestamp索引的数据框,我希望将其分组。它的形式如下:
key1 key2 value
2014-02-03 12:00:00 22 32 98.89
2014-02-03 12:00:00 23 33 99.25
2014-02-03 12:00:00 24 34 99.78
2014-02-03 15:00:00 22 32 96.54
2014-02-03 15:00:00 23 33 97.21
2014-02-03 15:00:00 24 34 98.59
2014-02-03 18:00:00 22 33 97.41
所以你可以看到,每3个索引都有3个小时的跳跃。我想使用均值作为函数进行索引分组。我用:
grouped = df.groupby(level=0).mean()
问题是我想确定如果有NaN(例如,如果2014-02-03 18:00:00只有2个条目而第三个是NaN)我想要的意思是要计算。我想使用numpy的nanmean
函数:
grouped = df.groupby(level=0).nanmean()
但是nanmean
不是groupby的属性,它不起作用。你有什么建议吗?感谢。
答案 0 :(得分:1)
我认为你会得到相同的输出,因为GroupBy.mean
省略NaN
s - 与np.nanmean
相同:
print (df)
key1 key2 value
2014-02-03 12:00:00 22.0 32.0 98.89
2014-02-03 12:00:00 23.0 33.0 99.25
2014-02-03 12:00:00 24.0 34.0 99.78
2014-02-03 15:00:00 22.0 32.0 96.54
2014-02-03 15:00:00 23.0 33.0 97.21
2014-02-03 15:00:00 24.0 34.0 98.59
2014-02-03 18:00:00 22.0 33.0 97.41
2014-02-03 18:00:00 25.0 40.0 100.00
2014-02-03 18:00:00 NaN NaN NaN
grouped = df.groupby(level=0).mean()
print (grouped)
key1 key2 value
2014-02-03 12:00:00 23.0 33.0 99.306667
2014-02-03 15:00:00 23.0 33.0 97.446667
2014-02-03 18:00:00 23.5 36.5 98.705000
grouped = df.groupby(level=0).agg(np.nanmean)
print (grouped)
key1 key2 value
2014-02-03 12:00:00 23.0 33.0 99.306667
2014-02-03 15:00:00 23.0 33.0 97.446667
2014-02-03 18:00:00 23.5 36.5 98.705000