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:00
for 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中的日期时间格式?的主要内容,如果未能解决你的问题,请参考以下文章