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

Python中如何按距离区间提取Height的max、min与average并生成新DataFrame?

没问题,这事儿用Pandas就能轻松搞定,我给你一步步拆解方案:

核心思路

用Pandas的pd.cut()将连续的Distance值划分成指定宽度的区间,再通过分组聚合计算每个区间内Height的统计值,最后整理成你需要的格式。

完整代码实现

假设你的原始DataFrame名为df,包含Distance(m)和Height(m)两列,代码如下:

import pandas as pd
import numpy as np

# 1. 定义分组区间宽度
bin_width = 0.04439
# 生成覆盖所有Distance值的区间边界(从0开始,步长0.04439,直到超过最大Distance值)
bins = np.arange(0, df['Distance(m)'].max() + bin_width, bin_width)

# 2. 给原始数据添加分组标签(include_lowest=True确保第一个区间包含0值)
df['interval'] = pd.cut(df['Distance(m)'], bins=bins, include_lowest=True)

# 3. 分组聚合,计算每个区间的Height最大值、最小值、平均值
grouped_stats = df.groupby('interval')['Height(m)'].agg(
    Height_max=('max'),
    Height_min=('min'),
    Height_average=('mean')
).reset_index()

# 4. 整理结果格式:添加区间序号、计算区间中点作为distance代表值
grouped_stats['Interval'] = range(1, len(grouped_stats) + 1)
# 提取区间左右边界,计算中点(对应你示例里的distance列)
grouped_stats['distance(m)'] = grouped_stats['interval'].apply(
    lambda x: (x.left + x.right) / 2
)

# 5. 调整列顺序并保留需要的列,匹配你要的输出格式
result_df = grouped_stats[[
    'Interval', 'distance(m)', 'Height_max', 'Height_min', 'Height_average'
]]
# 给统计列加上单位后缀
result_df.columns = [
    'Interval', 'distance(m)', 'Height_max(m)', 
    'Height_min(m)', 'Height_average(m)'
]

# 查看最终结果
print(result_df)
关键细节说明
  • pd.cut()的include_lowest=True:确保第一个区间(0到0.04439)能包含Distance=0的第一个数据点,避免数据遗漏。
  • 区间中点计算:用区间左右边界的平均值作为distance(m)列的值,和你示例里的格式一致;如果需要显示完整区间范围(比如[0, 0.04439]),直接保留interval列即可。
  • 分组数量验证:0到0.81m按0.04439m宽度分组,刚好是18个区间(0.81 / 0.04439 ≈ 18.25,最后一个区间会包含剩余的少量数据,不影响统计结果)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:06:53