Pandas:在 pandas 数据框中插入一个新行以填充日期

Pandas: insert a new row in pandas dataframe to populate with dates

我的 excel 文件有以下数据:

我想用那个月的第一个星期一开始的日期填充一个新行。

示例:

2020 年 5 月应如下所示:

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

有没有办法通过代码做到这一点?

我试过手动插入值,但是手动插入很忙,而且它会削弱编码的所有目的。

让我们从年月开始。对于您的示例,2020 年 5 月,是:

monthNo = 5
yearNo = 2020

所以月初日期可以计算为:

myDate = pd.to_datetime(f'{yearNo}-{monthNo:02}-01')

(时间戳('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)

最后一步,转换成你想要的格式即可实现运行ning:

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。

很遗憾,你的图片绝对不可读,所以我不知道 如何进行下一步。