我想每3行增加一天。
日期
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行再增加一天。
发布于 2021-02-03 09:42:15
如果需要从start_date开始的每3个值,添加由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)发布于 2021-02-03 09:36:47
下面的代码片段将在每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,它将开始在每四行上增加一天的日期。
https://stackoverflow.com/questions/66024328
复制相似问题