假设我有以下 DataFrame(时间序列,第一列是 DateTimeIndex)
atn file
datetime
2012-10-08 14:00:00 23.007462 1
2012-10-08 14:30:00 27.045666 1
2012-10-08 15:00:00 31.483825 1
2012-10-08 15:30:00 37.540651 2
2012-10-08 16:00:00 43.564573 2
2012-10-08 16:00:00 48.589852 2
2012-10-08 16:00:00 55.289452 2
我的目标是在最后一列“文件”中提取第一次出现特定数字的行,以便获得与此类似的表:
datetime atn
file
1 2012-10-08 14:00:00 23.007462
2 2012-10-08 15:30:00 37.540651
我的方法是按“文件”分组,然后在“第一”上聚合:
dt.groupby(by="file").aggregate("first")
但是这样做的问题是,索引不被用作分组的列。我首先通过以下方式将索引添加为列来解决此问题:
dt2 = dt.reset_index()
dt2.groupby(by="file").aggregate("first")
但现在的问题是 datetime 列不再是日期,而是浮动:
datetime atn
file
1 1.349705e+18 23.007462
2 1.349710e+18 37.540651
有没有
- 一种将浮点数转换回日期时间的方法?
- 或者一种在 groupby/aggregate-operation 中保留日期时间的方法?
- 或者一个更好的方法来实现这个最终表?
示例数据框可以按如下方式使用:
复制这个(到剪贴板):
2012-10-08 14:00:00, 23.007462, 1
2012-10-08 14:30:00, 27.045666, 1
2012-10-08 15:00:00, 31.483825, 1
2012-10-08 15:30:00, 37.540651, 2
2012-10-08 16:00:00, 43.564573, 2
2012-10-08 16:00:00, 48.589852, 2
2012-10-08 16:00:00, 55.289452, 2
进而:
dt = pandas.read_clipboard(sep=",", parse_dates=True, index_col=0,
names=["datetime", "atn", "file"])