[英]Pandas to_datetime convert year-week to date in 2019, first week is wk0
我曾經使用年份和周數將某些建議轉換為日期。 它在 2019 年之前運行良好,但是當我嘗試導入 2019 wk1 數據時,它已連接。
2019 wk1 變成 2019-01-07 ~ 2019-01-03
但相反,如果我使用日期轉換為年和周,則是正確的。
我可以知道我的代碼有什么問題嗎? 謝謝
d = {'year': [2018, 2018, 2018, 2019, 2019, 2019], 'week': [0, 1, 52, 0, 1, 2]}
df = pd.DataFrame(data=d)
df['date'] = pd.to_datetime(df['year'].map(str) + df['week'].map(str) + '-4', format='%Y%W-%w')
df['yearwk'] = pd.to_datetime(df['date'], format='%Y-%M-%D').dt.strftime('%YW%V')
print(df)
year week date yearwk
0 2018 0 2018-01-04 2018W01
1 2018 1 2018-01-04 2018W01
2 2018 52 2018-12-27 2018W52
3 2019 0 2019-01-03 2019W01
4 2019 1 2019-01-10 2019W02
5 2019 2 2019-01-17 2019W03
我使用給定的 year 和 weeknum 轉換為日期。 理想情況下,2019WK1 應該在 2018-12-31 到 2019-01-05 之間,但它變成了 2019-01-06 到 2019-01-13。 然后我使用該日期轉換為年份和周,結果正是我所期望的。
%W:以十進制數表示的一年中的周數(星期一為一周的第一天)。 新年中第一個星期一之前的所有日子都被視為第 0 周。
%w:工作日為十進制數,其中 0 是星期日,6 是星期六。
你把 4 作為 %w,表示你想要你提供的星期幾的星期四日期。
從星期一開始的 2018 年的第一周 ( %W
=1) 是:1 月 1 日 - 1 月 7 日或 1 月 4 日(星期四)
從星期一開始的 2019 年的第一周 ( %W
=1) 是:1 月 7 日 - 1 月 13 日或 1 月 10 日(星期四)
對於 2018 年,前一周沒有星期四,因此%W
=0 將輸出與%W
=1 相同的結果。 但是,對於 2019 年,前一周有一個星期四,因此%W
=0 將輸出 1 月 3 日。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.