python - Pandas - 从 DateTimeIndex 创建列

标签 python pandas

我有一个带有日期时间索引的 pandas DataFrame。我想创建一个由我的数据的年份和月份组成的 label 列。

我发现的方法是复制该列并对其进行操作(我必须这样做,因为 DateTimeIndex 没有 apply 方法).我确信一定有一种方法可以直接对索引进行操作,但我找不到它:

import pandas  as pd
import numpy as np


df = pd.DataFrame(index=pd.date_range(start="2012-01-01", end="2013-01-01", freq='D'), data=range(367))

monthly = df.resample("M")
monthly["label"] = monthly.index
monthly["label"] = monthly["label"].apply(lambda x: x.strftime("%Y-%m"))

monthly.head() 给我的地方:

                0    label
2012-01-31   15.0  2012-01
2012-02-29   45.0  2012-02
2012-03-31   75.0  2012-03
2012-04-30  105.5  2012-04
2012-05-31  136.0  2012-05

这正是我想要的,我只想在没有我用作解决方法的源代码中的倒数第二行的情况下执行此操作。

最佳答案

可能有一种更灵活的方法可以直接获取 strftime 结果,但通常当您想要将索引视为一列而不实际将其作为一个列时,您可以调用 .to_series()相反:

>>> monthly.index.to_series().head()
2012-01-31   2012-01-31
2012-02-29   2012-02-29
2012-03-31   2012-03-31
2012-04-30   2012-04-30
2012-05-31   2012-05-31
Freq: M, dtype: datetime64[ns]
>>> monthly.index.to_series().apply(lambda x: x.strftime("%Y-%m")).head()
2012-01-31    2012-01
2012-02-29    2012-02
2012-03-31    2012-03
2012-04-30    2012-04
2012-05-31    2012-05
Freq: M, dtype: object

关于python - Pandas - 从 DateTimeIndex 创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772153/

相关文章:

python - Sklearn MinMaxScaler y 的弃用错误

python - 使用类在 python 中使用计数器函数创建顺序搜索

python - Pandas:用重复的条目 reshape 数据框

python - 计算具有不同结构的两个不同表之间的相关性

python - 在 Pandas 中使用带有元组列的查询

python - Python的可访问类变量,敏感数据和恶意编码器(黑帽黑客)

python - 如何检查标识符是 dunder 还是 class-private(即会被破坏)?

python - SQLAlchemy group_by SQLite 与 PostgreSQL

python - Pandas 按结果分组到列

python - 有没有办法将时间序列数据重新采样为 x 小时并以 One-Hot 编码格式获得输出?