python - Pandas:按周数和年份字符串排序
问题描述
我有一个日期列表,这些日期变成了周数和年份;
dfweek['weeknum'] = df['Date'].dt.strftime('%U_%Y')
这将输出:34_2019
34 是 2019 年的第 34 周
自从订单出来后,我将如何按此字符串按时间顺序对数据进行排序:
00_2018
00_2019
01_2018
01_2019
我尝试通过以下方式转换回日期时间:
dfweek['weeknum1'] = pd.to_datetime(dfweek['weeknum'], format = '%W_%Y')
这一直返回错误: ValueError: Cannot use '%W' or '%U' without day and year
尝试以 %w 的形式添加一天,看看会发生什么
dfweek['weeknum'] = df['Date'].dt.strftime('%U_%Y_%w')
dfweek['weeknum1'] = pd.to_datetime(dfweek['weeknum'], format = '%W_%Y_%w')
但它只是吐回没有周数的原始日期
我想要的输出是
00_2018
01_2018
02_2018
...
51_2019
52_2019
解决方案
您可以使用以下内容进行排序:
dfweek = dfweek.assign(weeknum1= df['Date'].dt.strftime('%Y_%U')).sort_values('weeknum1')
在这里,我们使用格式例如“2018_00”创建了一个临时列weeknum1
,然后使用这种格式进行排序。结果,它根据需要按年+周数排序。