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

如何在Pandas中拼接DataFrame?附气象数据分组处理场景

如何在Pandas中拼接DataFrame(针对你的气象数据场景)

首先,先帮你优化下现有代码里的小细节:你目前分组用的是未替换缺失值的data1,但已经把缺失值替换到了df2里,应该统一用df2来分组,不然计算均值时会包含-9999,结果会不准确哦。

最优方案:直接在分组时计算多列均值(避免后续拼接)

其实你完全可以在groupby一步就同时算出平均最低温和最高温,这样直接得到包含两列的DataFrame,不需要额外拼接操作,更高效:

import pandas as pd

# 替换缺失值
df2 = data.replace(to_replace=-9999, value=0)
# 按年份分组,同时计算MinTemp和MaxTemp的均值
annual_temp_stats = df2.groupby(df2.Date.str[:4])[['MinTemp', 'MaxTemp']].mean()

# 输出结果会是:
#          MinTemp  MaxTemp
# Date
# 1985    xxxx.xx  153.347945
# 1986    xxxx.xx  ...

如果你已经分别生成了单列DataFrame,用以下方法拼接

假设你已经有了单独的平均最低温表tmp_min和平均最高温表tmp_max,可以用两种常用方式拼接:

方法1:用pd.concat()按列拼接

这种方式适合两个表的索引完全一致的情况(比如你的两个表索引都是年份):

# 先生成两个单列DataFrame
tmp_max = df2.groupby(df2.Date.str[:4])['MaxTemp'].mean().to_frame()
tmp_min = df2.groupby(df2.Date.str[:4])['MinTemp'].mean().to_frame()

# 按列方向拼接,axis=1表示列合并
result = pd.concat([tmp_min, tmp_max], axis=1)

方法2:用merge()基于索引匹配拼接

如果两个表的索引是关联键(这里是年份),可以用merge指定按索引匹配:

result = tmp_min.merge(tmp_max, left_index=True, right_index=True)

这两种方法都能得到包含平均最低温和最高温的合并DataFrame,你可以根据自己的习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:48:29