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

如何为时间序列数据按月份分配对应数值?

解决方案

首先要确保你的Timestamp列是datetime格式,这是时间序列处理的基础,然后根据你的需求选择对应方法:

情况1:给每个「年+月」组合分配唯一递增数值(匹配你的示例)

你的示例中,2018年12月统一为1,2019年1月统一为2,2018年2月统一为3,这是按不同年月组分配唯一编号的需求,用groupby结合ngroup()就能实现:

import pandas as pd

# 加载示例数据
df = pd.DataFrame({
    'Timestamp': ['29-12-2018', '31-12-2018', '01-01-2019', '05-01-2019', '02-02-2018']
})

# 第一步:将字符串格式的Timestamp转为datetime(注意格式是日-月-年,需指定format参数)
df['Timestamp'] = pd.to_datetime(df['Timestamp'], format='%d-%m-%Y')

# 第二步:按年月分组,分配组编号(ngroup默认从0开始,加1让编号从1起始)
df['Value'] = df.groupby(df['Timestamp'].dt.to_period('M')).ngroup() + 1

执行后得到的结果与你的示例完全一致:

TimestampValue
2018-12-291
2018-12-311
2019-01-012
2019-01-052
2018-02-023

情况2:按月份(忽略年份)分配固定数值

如果你的需求是不管年份,只要是12月就分配1,1月分配2,2月分配3,可以用字典映射的方式:

# 定义月份到数值的映射字典
month_to_value = {12: 1, 1: 2, 2: 3}

# 提取月份并映射为对应数值
df['Value'] = df['Timestamp'].dt.month.map(month_to_value)

这种方法适合固定月份对应固定值的场景,比如所有1月的数据都赋予同一个值,不受年份影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:50