【问题标题】:df.groupby(.pdGrouper(freq='D') ).idxmax throwing an ValueErrordf.groupby(.pdGrouper(freq='D') ).idxmax 抛出一个 ValueError
【发布时间】:2021-01-12 02:40:40
【问题描述】:

我正在尝试按天分组并找到每天的最大值。

df.loc[df.groupby(pd.Grouper(freq='D'))['High'].idxmax()]

当我的数据框很小且仅连续几天成功运行时(我认为缺少周末/节假日时遇到错误)

                          InternalSymbol    Open    High     Low   Close  
CollectionTimestamp (CST)                                                  
2018-09-17 10:00:00                 GCZ8  1206.1  1209.7  1205.9  1208.3   
2018-09-18 09:00:00                 GCZ8  1205.6  1208.2  1205.2  1206.4   
2018-09-19 08:00:00                 GCZ8  1207.6  1211.0  1205.9  1210.0   
2018-09-20 10:00:00                 GCZ8  1211.0  1213.2  1208.1  1209.1   
2018-09-21 06:00:00                 GCZ8  1212.3  1212.7  1209.3  1209.7 

当我尝试合并我的整个数据集时(几年,周日至周五,不包括市场假期等)。我收到此错误..

ValueError: attempt to get argmax of an empty sequence

我假设它与我关于 freq='D' 的代码行有关。有这样的解决方法吗?

这是示例数据框。请注意,我保留了 2018-09-24 数据,因此它会遇到我所指的错误,如果您删除 2018-09-24 行,则 .pdGrouper(freq='D') 将起作用。

                          InternalSymbol    Open    High     Low   Close
CollectionTimestamp (CST)                                               
2018-09-17 06:00:00                 GCZ8  1202.1  1203.7  1201.5  1202.5
2018-09-17 07:00:00                 GCZ8  1202.5  1202.6  1200.8  1202.2
2018-09-17 08:00:00                 GCZ8  1202.3  1204.8  1202.1  1204.1
2018-09-17 09:00:00                 GCZ8  1204.1  1206.7  1203.4  1206.1
2018-09-17 10:00:00                 GCZ8  1206.1  1209.7  1205.9  1208.3
2018-09-17 11:00:00                 GCZ8  1208.2  1209.0  1207.0  1207.8
2018-09-17 12:00:00                 GCZ8  1207.8  1207.9  1206.5  1207.3
2018-09-17 13:00:00                 GCZ8  1207.2  1207.4  1205.3  1205.9
2018-09-17 14:00:00                 GCZ8  1205.9  1206.8  1204.6  1205.6
2018-09-17 15:00:00                 GCZ8  1205.7  1206.0  1204.6  1205.2
2018-09-18 06:00:00                 GCZ8  1203.7  1204.9  1202.9  1204.7
2018-09-18 07:00:00                 GCZ8  1204.8  1207.8  1204.6  1207.0
2018-09-18 08:00:00                 GCZ8  1207.0  1207.1  1204.1  1205.7
2018-09-18 09:00:00                 GCZ8  1205.6  1208.2  1205.2  1206.4
2018-09-18 10:00:00                 GCZ8  1206.3  1206.5  1202.2  1204.6
2018-09-18 11:00:00                 GCZ8  1204.7  1205.0  1203.1  1203.8
2018-09-18 12:00:00                 GCZ8  1203.8  1204.3  1202.7  1203.0
2018-09-18 13:00:00                 GCZ8  1203.0  1203.9  1201.9  1203.0
2018-09-18 14:00:00                 GCZ8  1203.0  1203.3  1201.7  1202.4
2018-09-18 15:00:00                 GCZ8  1202.3  1203.0  1201.4  1202.9
2018-09-19 06:00:00                 GCZ8  1207.3  1208.4  1207.2  1207.6
2018-09-19 07:00:00                 GCZ8  1207.6  1208.2  1206.8  1207.6
2018-09-19 08:00:00                 GCZ8  1207.6  1211.0  1205.9  1210.0
2018-09-19 09:00:00                 GCZ8  1210.0  1210.1  1206.0  1207.9
2018-09-19 10:00:00                 GCZ8  1207.9  1208.9  1205.7  1208.1
2018-09-19 11:00:00                 GCZ8  1208.1  1210.8  1207.4  1208.2
2018-09-19 12:00:00                 GCZ8  1208.3  1209.5  1208.1  1208.9
2018-09-19 13:00:00                 GCZ8  1208.9  1209.0  1207.2  1207.5
2018-09-19 14:00:00                 GCZ8  1207.4  1208.9  1207.4  1208.6
2018-09-19 15:00:00                 GCZ8  1208.6  1208.7  1207.6  1208.3
2018-09-20 06:00:00                 GCZ8  1207.4  1208.3  1206.8  1207.8
2018-09-20 07:00:00                 GCZ8  1207.8  1210.4  1207.2  1210.2
2018-09-20 08:00:00                 GCZ8  1210.2  1212.5  1209.7  1211.7
2018-09-20 09:00:00                 GCZ8  1211.8  1212.4  1209.8  1211.0
2018-09-20 10:00:00                 GCZ8  1211.0  1213.2  1208.1  1209.1
2018-09-20 11:00:00                 GCZ8  1209.1  1209.6  1207.6  1208.2
2018-09-20 12:00:00                 GCZ8  1208.2  1210.5  1208.0  1210.4
2018-09-20 13:00:00                 GCZ8  1210.3  1211.6  1209.5  1210.6
2018-09-20 14:00:00                 GCZ8  1210.5  1211.4  1209.6  1211.3
2018-09-20 15:00:00                 GCZ8  1211.4  1212.6  1211.2  1211.9
2018-09-21 06:00:00                 GCZ8  1212.3  1212.7  1209.3  1209.7
2018-09-21 07:00:00                 GCZ8  1209.7  1210.4  1208.6  1209.1
2018-09-21 08:00:00                 GCZ8  1209.0  1209.8  1199.3  1200.1
2018-09-21 09:00:00                 GCZ8  1200.2  1202.0  1196.0  1200.8
2018-09-21 10:00:00                 GCZ8  1200.9  1205.6  1200.9  1204.3
2018-09-21 11:00:00                 GCZ8  1204.3  1204.7  1199.8  1200.6
2018-09-21 12:00:00                 GCZ8  1200.6  1203.0  1200.3  1201.7
2018-09-21 13:00:00                 GCZ8  1201.6  1203.3  1200.3  1201.3
2018-09-21 14:00:00                 GCZ8  1201.4  1201.5  1200.2  1201.5
2018-09-21 15:00:00                 GCZ8  1201.6  1203.5  1201.5  1203.3
2018-09-24 06:00:00                 GCZ8  1203.3  1204.1  1202.9  1203.0
2018-09-24 07:00:00                 GCZ8  1203.0  1204.9  1202.9  1204.2
2018-09-24 08:00:00                 GCZ8  1204.3  1205.4  1202.5  1202.6
2018-09-24 09:00:00                 GCZ8  1202.5  1208.6  1202.3  1207.1
2018-09-24 10:00:00                 GCZ8  1207.1  1208.8  1205.9  1207.8
2018-09-24 11:00:00                 GCZ8  1207.7  1208.3  1204.7  1206.1
2018-09-24 12:00:00                 GCZ8  1206.1  1206.2  1204.7  1205.6
2018-09-24 13:00:00                 GCZ8  1205.5  1205.5  1203.5  1204.2
2018-09-24 14:00:00                 GCZ8  1204.1  1204.3  1203.3  1203.8
2018-09-24 15:00:00                 GCZ8  1203.7  1204.2  1202.9  1203.3

【问题讨论】:

    标签: python pandas dataframe datetime time-series


    【解决方案1】:

    尝试对现有日期进行分组。使用 grouperresample 将尝试使用没有最大值的 NaN 来填充您缺少的天数,因此没有与这些缺失天数相关联的现有索引:

    df.loc[df.groupby(df.index.date)["High"].idxmax()]
    
    
                              InternalSymbol    Open    High     Low   Close
    CollectionTimestamp (CST)                                               
    2018-09-17 10:00:00                 GCZ8  1206.1  1209.7  1205.9  1208.3
    2018-09-18 09:00:00                 GCZ8  1205.6  1208.2  1205.2  1206.4
    2018-09-19 08:00:00                 GCZ8  1207.6  1211.0  1205.9  1210.0
    2018-09-20 10:00:00                 GCZ8  1211.0  1213.2  1208.1  1209.1
    2018-09-21 06:00:00                 GCZ8  1212.3  1212.7  1209.3  1209.7
    2018-09-24 10:00:00                 GCZ8  1207.1  1208.8  1205.9  1207.8
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多