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

Pandas DataFrame列求和及10年小时气象数据按月均值计算求助

Pandas 常见数据处理问题解答

1. 如何对DataFrame中的某一列值求和?

直接使用列的sum()方法即可,示例如下:

import pandas as pd

# 假设你的DataFrame为df,目标列是'FH'(风速)
column_sum = df['FH'].sum()
print(f"列'FH'的总和为: {column_sum}")

如果列中存在缺失值,可通过skipna参数控制是否跳过(默认skipna=True,自动跳过缺失值):

column_sum_with_na = df['FH'].sum(skipna=False)

2. 逐小时气象数据按月计算平均值

针对10年的逐小时大型数据集,可通过时间序列重采样实现按月求平均,步骤如下:

步骤1:解析日期时间

先将YYYYMMDD(日期)和HH(小时)合并为标准的datetime类型,方便后续时间分组:

import pandas as pd

# 读取数据(示例数据用空格分隔,跳过注释行)
df = pd.read_csv('weather_data.csv', sep='\s+', comment='#')

# 合并日期与小时为datetime列:将YYYYMMDD转成字符串,小时补零后拼接,再解析为datetime
df['datetime'] = pd.to_datetime(
    df['YYYYMMDD'].astype(str) + df['HH'].astype(str).str.zfill(2),
    format='%Y%m%d%H'
)

# 将datetime设为索引(可选,但能简化时间操作)
df.set_index('datetime', inplace=True)

步骤2:按月重采样计算平均值

使用resample('M')按月份分组,对风速(FH)、气温(T)、气压(P)列求均值:

# 按月计算指定列的平均值
monthly_averages = df.resample('M')[['FH', 'T', 'P']].mean()

# 查看结果
print(monthly_averages)

针对超大型数据集的优化

如果数据量过大无法一次性加载到内存,可采用分块读取的方式处理:

chunk_size = 10000  # 分块大小,根据内存情况调整
processed_chunks = []

# 分块读取并处理
for chunk in pd.read_csv('large_weather_data.csv', sep='\s+', comment='#', chunksize=chunk_size):
    chunk['datetime'] = pd.to_datetime(
        chunk['YYYYMMDD'].astype(str) + chunk['HH'].astype(str).str.zfill(2),
        format='%Y%m%d%H'
    )
    processed_chunks.append(chunk.set_index('datetime'))

# 合并所有分块
df = pd.concat(processed_chunks)

# 计算月度平均值
monthly_averages = df.resample('M')[['FH', 'T', 'P']].mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:34:59