每x行增加1天



我想每3行增加1天。

日期
start_date = "01/02/21"
date_1 = datetime.datetime.strptime(start_date, "%d/%m/%y")
end_date = date_1 + datetime.timedelta(days=1)
df_4["date"] = end_date

需要的输出

A   date
1   01/02/21
2   01/02/21
3   01/02/21
4   02/02/21 # add 1 day
5   02/02/21
6   02/02/21
7   03/02/21 # add 1 day
8   03/02/21
9   03/02/21
10  04/02/21 # add 1 day
11  04/02/21
12  04/02/21
...

现在它为所有行增加1天,而不是每3行增加1天

如果需要start_date开始的每3个值添加timedeltas由np.arange生成的天数与DataFrame的长度,什么是更快的循环解决方案:

start_date = "01/02/21"
date_1 = datetime.datetime.strptime(start_date, "%d/%m/%y")
df["date"] = date_1 + pd.to_timedelta(np.arange(len(df)) // 3, unit='d')

print (df)
A       date Note
0    1 2021-02-01  NaN
1    2 2021-02-01  NaN
2    3 2021-02-01  NaN
3    4 2021-02-02  add
4    5 2021-02-02  NaN
5    6 2021-02-02  NaN
6    7 2021-02-03   ad
7    8 2021-02-03  NaN
8    9 2021-02-03  NaN
9   10 2021-02-04  add
10  11 2021-02-04  NaN
11  12 2021-02-04  NaN

:

print (np.arange(len(df)) // 3)
[0 0 0 1 1 1 2 2 2 3 3 3]
print (pd.to_timedelta(np.arange(len(df)) // 3, unit='d'))
TimedeltaIndex(['0 days', '0 days', '0 days', '1 days', '1 days', '1 days',
'2 days', '2 days', '2 days', '3 days', '3 days', '3 days'],
dtype='timedelta64[ns]', freq=None)

下面的代码片段将在每3行(由add_every_x_rows指定)之后的行中增加一天的日期

df['Date'] = [datetime.datetime.strptime(str(x), "%d/%m/%y").date() for x in df['Date']]
add_every_x_rows = 3
day_counter = 0
for i,row in df.iterrows():
day_counter+=1
if (day_counter == add_every_x_rows +1):
df.at[i,'Date'] = row['Date'] + datetime.timedelta(days=1)
day_counter = 1

如果稍后将add_every_x_rows的值更改为4,它将开始每四行增加一天的日期。

最新更新