You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据温度连续高于0的条件拆分DataFrame为多个子DataFrame

拆分DataFrame为温度连续高于0的独立片段

示例数据构造

先还原你的示例DataFrame:

import pandas as pd

data = {
    "日期": ["2022-05-20"]*9,
    "时间": ["4:16", "4:17", "4:18", "4:19", "4:34", "4:39", "4:48", "4:49", "4:59"],
    "温度": [32, 16, 0, 7, 75, 5, 0, 0, 83]
}
df = pd.DataFrame(data)

拆分方法

核心思路是识别温度连续高于0的片段,给每个片段分配唯一分组ID,再按ID拆分:

# 1. 标记温度是否大于0
df['is_above_zero'] = df['温度'] > 0

# 2. 生成连续段的分组键:当温度从<=0变为>0时,分组ID递增
df['group_id'] = (df['is_above_zero'] & ~df['is_above_zero'].shift(fill_value=False)).cumsum()

# 3. 过滤掉温度<=0的组,然后按group_id拆分
result_dfs = [group for _, group in df[df['is_above_zero']].groupby('group_id')]

输出结果

现在result_dfs就是你要的三个独立DataFrame:

  • 第一个DataFrame:
日期时间温度
2022-05-204:1632
2022-05-204:1716
  • 第二个DataFrame:
日期时间温度
2022-05-204:197
2022-05-204:3475
2022-05-204:395
  • 第三个DataFrame:
日期时间温度
2022-05-204:5983

代码解释

  • is_above_zero列:简单标记每行温度是否符合条件
  • group_id生成:通过shift()对比当前行和上一行的状态,当状态从False变为True时,cumsum()会让分组ID加1,这样连续的True行就会分到同一个组
  • 最后过滤掉非目标行,按分组ID拆分得到多个独立DataFrame

内容的提问来源于stack exchange,提问作者Nadka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:25:24