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

如何使用Pandas按条件分组,合并连续非空Fluid的Depth为区间?

解决方案

可以用Pandas的分组聚合功能实现,步骤如下:

首先准备示例数据:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Depth': [235.5, 236, 236.5, 237, 237.5, 238],
    'Fluid': [np.nan, 'water', 'water', np.nan, 'water', 'water']
})

然后执行数据处理:

# 标记Fluid非空的有效行
df['valid'] = df['Fluid'].notna()
# 生成连续有效行的分组标识
df['group'] = df['valid'].cumsum()
# 分组聚合得到结果
result = df[df['valid']].groupby('group').agg(
    Min_Depth=('Depth', 'min'),
    Max_Depth=('Depth', 'max'),
    Fluid=('Fluid', 'first')
).reset_index(drop=True)

print(result)

代码解释

  • df['Fluid'].notna():生成布尔列,标记哪些行的Fluid值不为空,用来区分有效数据块和分隔用的NaN行。
  • df['valid'].cumsum():对布尔列求和,连续的有效行会被分配同一个组号,这样就能把被NaN分隔开的相同Fluid数据块分成不同的组。
  • groupby('group').agg(...):按组聚合,分别计算每组Depth的最小值、最大值,同时取每组的第一个Fluid值(同一组内Fluid值一致)。
  • reset_index(drop=True):移除分组用的group索引,得到整洁的结果格式。

运行后输出结果:

Min_Depth  Max_Depth  Fluid
0      236.0      236.5  water
1      237.5      238.0  water

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:01:01