如何从 python 中的 yyyyww 列中提取一周的最后一天

How do I extract last day of week from yyyyww column in python

我有一个 df_mixed 列,其中包含 yyyyww 格式的数据,例如:201501、201502 等 我必须提取一周的最后一天并将其放入 ds 列。

例如:对于 201501,第 1 周的最后一天是 4-1-2015 对于 201502,最后一天是 11-1-2015

我必须遵循 ISO 格式。 根据 ISO 格式,2015 年的第一周从 2014 年 12 月 29 日开始到 2015 年 1 月 4 日结束

知道如何使用 python、pandas 和日期时间库吗?

假设输入:

df = pd.DataFrame({'date': ['201501', '201502']})

如果您选择星期日作为一周的最后一天:

df['date2'] = pd.to_datetime(df['date']+'Sun', format='%Y%W%a')
df

输出:

     date      date2
0  201501 2015-01-11
1  201502 2015-01-18

注意。如果您想要美国周格式,请使用 %U 代替 %W 并使用 Mon 作为一周的最后一天。请参阅 datetime 的文档以获得更多精度

IIUC 使用 pd.to_datetime%Y%W%w 格式构建日期时间。我将 0 添加为工作日,因为您想要星期日,即一周的第一天:

df = pd.DataFrame({"Date":[201501, 201502]})

df["Date"] = pd.to_datetime((df["Date"]-1).astype(str)+"0", format="%Y%W%w")

print (df)

        Date
0 2015-01-04
1 2015-01-11