将日期月份转换为序列

convert month of dates into sequence

我想将年份中的月份组合成序列,例如,我有这样的数据框:

stuff_id    date
1           2015-02-03
2           2015-03-03
3           2015-05-19
4           2015-10-13
5           2016-01-07
6           2016-03-20

我想对日期中的月份进行排序。所需的输出是:

stuff_id    date            month
1           2015-02-03      1
2           2015-03-03      2
3           2015-05-19      4
4           2015-10-13      9
5           2016-01-07      12
6           2016-03-20      14

这意味着 feb'15 是日期列表中的第一个月,jan'2016 是 feb'2015 之后的第 12 个月

如果您的 date 列是日期时间(如果不是,则将其转换为日期时间),您可以为此使用 .dt.month.dt.year 属性!

https://pandas.pydata.org/docs/reference/api/pandas.Series.dt.month.html

重铸

(文本复制自

>>> df = pd.read_table(io.StringIO(s), delim_whitespace=True)  # text from SO
>>> df["date"] = pd.to_datetime(df["date"])
>>> df
   stuff_id       date
0         1 2015-02-03
1         2 2015-03-03
2         3 2015-05-19
3         4 2015-10-13
4         5 2016-01-07
5         6 2016-03-20
>>> df.dtypes
stuff_id             int64
date        datetime64[ns]
dtype: object

将年份和月份提取为十进制月份并减少为相对月份

>>> months = df["date"].dt.year * 12 + df["date"].dt.month  # series
>>> df["months"] = months - min(months) + 1
>>> df
   stuff_id       date  months
0         1 2015-02-03       1
1         2 2015-03-03       2
2         3 2015-05-19       4
3         4 2015-10-13       9
4         5 2016-01-07      12
5         6 2016-03-20      14