熊猫:在熊猫数据框中插入新行以填充日期

时间:2020-05-10 19:25:44

标签: excel pandas python-datetime

我的excel文件具有以下数据:

enter image description here

我想用该月的第一个星期一开始的特定月份的日期填充一个新行。

示例:

对于2020年5月,应如下所示:

<code>enter image description here</code>

日期采用d / m / yyyy格式。

有什么办法可以通过代码做到这一点?

我已经尝试过手动插入值,但是手动进行操作很忙,而且也减少了所有编码的目的。

1 个答案:

答案 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。

很遗憾,您的图片绝对无法读取,所以我不知道 如何进行进一步的操作。