python - 如何将带有年份的周数转换为python pandas中的日期时间格式?

Posted

技术标签:

【中文标题】python - 如何将带有年份的周数转换为python pandas中的日期时间格式?【英文标题】:How to convert a week number with year into datetime format in python pandas? 【发布时间】:2019-09-29 20:32:06 【问题描述】:

我有一个数据框df:

df = pd.DataFrame('id': [1,2,3,4,5], 
               'week': [201613, 201714, 201715, 201716, 201717])

看起来像:

   id    week
0   1  201613
1   2  201714
2   3  201715
3   4  201716
4   5  201717

week 列显示特定年份的星期几。例如201613 表示 2016 年的第 13 周。

我希望添加一个新列week_timestamp,它应该给我本周星期一的时间戳。它应该给我类似2016–03–28 00:00:00for 201613 的东西。

如何在熊猫中做到这一点?

【问题讨论】:

提示:您可以从第一原则做到这一点,而无需太多开销。考虑使用基本操作(即+*)从周数到日期的算法。首先用文字写出来,然后用逻辑/数学写出来,然后尝试用 Python 实现它。 我试过df['week_timestamp'] = pd.to_datetime(df['week'] + '1', format='%Y%W%w') ,但它给了我一个错误:TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U21') dtype('<U21') dtype('<U21') df['week'] 是一个 int,尝试 df['week'].astype(str) 将其用作字符串 这应该可以解决您的问题pd.to_datetime(df['week'].astype(str) + '1', format="%Y%W%w") 我记得大约 10-11 个月前(在我开始使用 python 之前)我必须在 excel 中执行此操作,只需 google 如何将周数转换为日期,您就可以将数学转换为 Python 代码。如果 Erfan 的解决方案不起作用,请告诉我,我会解决的。 【参考方案1】:

df['week_timestamp'] = pd.to_datetime(df['week'].astype(str) + '1', format='%Y%W%w')

【讨论】:

如果 @Erfan's solution 对您有用,请告知用户,以便他们发布答案。

以上是关于python - 如何将带有年份的周数转换为python pandas中的日期时间格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何将周数和年份转换为 unix 时间戳?

从 Aginity 工作台中的周数和年份获取一周的最后一天

如何计算编号。从当前周到给定周的周数?

怎么取两个日期之间的周数

JS将日期转换成当年的周数(work week)

将日期列转换为周数、日期、月份、年份