如何按HH列唯一值循环提取各分组最后10分钟的价格数据?
解决分组提取最后10分钟数据的问题
你的代码核心问题是没按HH的唯一值筛选对应分组,循环里每次都直接对整个数据集调用last("10min"),所以得到的全是整体数据的最后10分钟,不是目标分组的。下面给两种可行的解决办法:
方法一:修正原有循环逻辑
先筛选出当前HH对应的子数据集,再提取该分组的最后10分钟数据:
dfs = [] for i in UK_Trades["HH"].unique(): # 先筛选HH等于当前i的分组数据 group_data = UK_Trades[UK_Trades["HH"] == i] # 提取该分组的最后10分钟数据 df_i = group_data.last("10min") dfs.append(df_i.copy())
方法二:用groupby高效处理
直接借助pandas的分组功能,不用手动写循环,代码更简洁:
# 按HH分组,对每个分组应用last("10min")提取最后10分钟数据 result = UK_Trades.groupby("HH").apply(lambda x: x.last("10min")) # 若需要拆成列表形式,直接转换即可 dfs = list(result.groupby("HH"))
补充注意事项
- 确保你的
Datetime列已经设为正确的datetime类型索引,如果还没设置,先执行UK_Trades = UK_Trades.set_index("Datetime") - 如果某个
HH分组的时间跨度不足10分钟,last("10min")会返回该分组的全部数据
内容的提问来源于stack exchange,提问作者kit12_31
相关产品推荐
相关产品推荐

