我的excel文件具有以下数据:
我想用该月的第一个星期一开始的特定月份的日期填充一个新行。
示例:
对于2020年5月,应如下所示:
日期采用d / m / yyyy格式。
有什么办法可以通过代码做到这一点?
我已经尝试过手动插入值,但是手动进行操作很忙,而且也减少了所有编码的目的。
答案 0 :(得分:1)
让我们从月份和年份开始。例如,2020年5月,是:
monthNo = 5
yearNo = 2020
因此月份的开始日期可以计算为:
myDate = pd.to_datetime(f'{yearNo}-{monthNo:02}-01')
( Timestamp('2020-05-01 00:00:00'))
然后我们定义到星期一和月底的偏移量:
mondayOffs = pd.offsets.Week(0, weekday=0)
eoMonthOffset = pd.offsets.MonthEnd(0)
计算所选月份的第一个星期一的日期以及 本月末,运行:
startDate = monOffs.rollforward(myDate)
endDate = eoMonthOffset.rollforward(myDate)
获取:
Timestamp('2020-05-04 00:00:00')
Timestamp('2020-05-31 00:00:00')
要在上述日期之间生成日期序列,请运行:
seq = pd.date_range(start=startDate, end=endDate)
最后一步,转换为所需的格式即可实现运行:
dates = seq.strftime('%#d/%#m/%Y').tolist()
压缩后的结果(一行中包含多个日期)是
['4/5/2020', '5/5/2020', '6/5/2020', '7/5/2020', '8/5/2020',
'9/5/2020', '10/5/2020', '11/5/2020', '12/5/2020', '13/5/2020',
'14/5/2020', '15/5/2020', '16/5/2020', '17/5/2020', '18/5/2020',
'19/5/2020', '20/5/2020', '21/5/2020', '22/5/2020', '23/5/2020',
'24/5/2020', '25/5/2020', '26/5/2020', '27/5/2020', '28/5/2020',
'29/5/2020', '30/5/2020', '31/5/2020']
现在由您决定如何将其保存在DataFrame中,然后保存它 Excel文件中的DataFrame。
很遗憾,您的图片绝对无法读取,所以我不知道 如何进行进一步的操作。