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

如何按国家对Pandas DataFrame进行月度重采样?

问题原因与解决方法

问题根源

你执行resample('M').sum()时,Pandas会对DataFrame中所有列应用sum操作。由于Country是字符串类型,Pandas对字符串执行sum的逻辑是拼接所有同组的字符串,因此出现了ATATAT...这类重复拼接的异常结果。

修正方案

方案1:仅对数值列(Value)求和

直接指定只对Value列执行聚合,避免处理Country列:

import pandas as pd

# 先确保Date是datetime类型(如果原数据中Date为字符串格式)
merged_df['Date'] = pd.to_datetime(merged_df['Date'])
merged_df.set_index('Date', inplace=True)

# 仅对Value列做月度求和
monthly_values = merged_df.groupby('Country').resample('M')['Value'].sum()

执行后得到带多级索引(Country + Date)的Series,仅包含月度求和后的Value值。如果需要转回常规DataFrame格式,可追加:

monthly_values = monthly_values.reset_index(name='Value')

方案2:用agg明确指定各列聚合规则

如果需要在结果中保留Country列,可以通过agg为不同列指定对应逻辑(同组内Country值一致,取任意一个即可):

import pandas as pd

merged_df['Date'] = pd.to_datetime(merged_df['Date'])
merged_df.set_index('Date', inplace=True)

monthly_values = merged_df.groupby('Country').resample('M').agg({
    'Country': 'first',  # 取同组第一个Country值(所有值完全相同)
    'Value': 'sum'       # 对Value做月度求和
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:45:11