python - 在 groupby 操作中保留日期时间索引

标签 python pandas

假设我有以下 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

我的目标是提取最后一列'file'中某个数字第一次出现的行,所以得到一个类似这样的表:

       datetime             atn
file                             
1      2012-10-08 14:00:00  23.007462
2      2012-10-08 15:30:00  37.540651

我的方法是按"file"进行分组,然后在“第一个”上聚合:

dt.groupby(by="file").aggregate("first")

但是这样做的问题是索引没有被用作分组的列。我通过首先将索引添加为列解决了这个问题:

dt2 = dt.reset_index()
dt2.groupby(by="file").aggregate("first")

但现在的问题是日期时间列不再是日期而是 float 的:

          datetime        atn
file                         
1     1.349705e+18  23.007462
2     1.349710e+18  37.540651

有没有

  • 一种将 float 转换回日期时间的方法?
  • 或者在 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"])

最佳答案

我认为这是 pandas 中的一个错误 - dtype 在 groupby 之后更改为 float

dt3 = dt2.groupby(by="file").aggregate("first")
dt3.dtypes

给我:

datetime    float64
atn         float64

要将 dtype 改回 datetime64,您可以执行以下操作:

dt3['datetime'] = pd.Series(dt3['datetime'], dtype='datetime64[ns]')

我在 GitHub 上创建了一个新问题

关于python - 在 groupby 操作中保留日期时间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361326/

相关文章:

python - pandas, Python 中 "Jul 07, 2019"的日期解析代码

python - 为什么非空槽不能与 int、tuple、bytes 子类一起使用?

Python3.7 Pandas1.0.1 Dataframe - 计算范围内的列总和并重新组合为一个新行?

python - 如何在 Django 中访问通过表单集上传的图像?

python - 如何在Python中计算趋势的陡度

python - 删除pivot_table中的一列以更改分组逻辑

python - Matplotlib:带有日期和数值的散点图

Python pandas 删除具有列值 "NaN"的重复行

python - Jupyter Notebook 未从 Anaconda Navigator 启动

python - 如何在 tensorflow 中处理不同的队列批量大小和馈送值批量大小?