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

如何在Pandas中拆分/排序DataFrame并按日/月分组观测数据?

解决观测数据按日/月分组的步骤

首先,你的原始pd.read_csv未正确处理以#开头的日期分隔行,需要先重新读取整理数据,再完成分组操作,具体步骤如下:

1. 重新读取并清洗数据

原数据中#开头的行是日期标识,需要提取这些日期并将对应数据行匹配到所属日期:

import pandas as pd
from datetime import datetime

# 逐行读取文件内容
with open("./INM00043333-data.txt", "r") as f:
    lines = f.readlines()

# 初始化存储变量
data_rows = []
current_date = None

for line in lines:
    line = line.strip()
    if not line:
        continue
    # 识别日期行(#开头)
    if line.startswith("#"):
        date_str = line.split()[1]
        current_date = datetime.strptime(date_str, "%Y-%m-%d")
    else:
        # 拆分数据行并绑定当前日期(字段名根据实际数据调整)
        parts = line.split()
        row = {
            "date": current_date,
            "time": parts[0],
            "temp": float(parts[1]),
            "dew_point": float(parts[2]),
            "pressure": float(parts[3])
        }
        data_rows.append(row)

# 转换为DataFrame并生成完整时间列
df = pd.DataFrame(data_rows)
df["datetime"] = pd.to_datetime(df["date"].astype(str) + " " + df["time"])

2. 数据排序

按完整时间列排序,保证数据时序正确:

df = df.sort_values(by="datetime").reset_index(drop=True)

3. 按日/月分组

按日分组

提取日期部分作为分组键,可按需选择聚合方式:

# 按日计算各指标均值(可替换为sum、max、min等聚合函数)
daily_groups = df.groupby(df["datetime"].dt.date).agg({
    "temp": "mean",
    "dew_point": "mean",
    "pressure": "mean"
})

# 若需保留每日原始数据,直接分组即可
daily_raw_data = df.groupby(df["datetime"].dt.date)

按月分组

提取月份周期作为分组键,支持多维度统计:

# 按月计算各指标的均值、极值等
monthly_groups = df.groupby(df["datetime"].dt.to_period("M")).agg({
    "temp": ["mean", "max", "min"],
    "dew_point": "mean",
    "pressure": "median"
})

补充说明

如果你的数据字段与示例不符,需调整row字典中的键和parts索引,确保与实际数据列匹配。

内容的提问来源于stack exchange,提问作者The Emerging Star

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:20:23