python - 每 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
添加由 DataFrame 长度生成的 timedeltas 天数开始的每 3 个值np.arange
,那么循环解决方案的速度更快:
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)
推荐阅读
- ruby - 在 rails5 中关注用户 - 错误 UNIQUE 约束失败:relationships.follower_id,relationships.followed_id
- c++11 - 模板函数调用模板类中的模板静态函数时出现编译错误
- electron - 如何在电子中获取 Web 部件(铬视图)的边界
- javascript - 选择某个字符后的 1 个字符
- apache-kafka - 如何测量 Kafkaproducer 在 2 分钟内发送的 send() 请求数
- python-3.x - 如何将列表保存到从 Python 中的并行计算获得的文件中?
- angular - 无法设置值以在反应形式中选择
- html - 使用 ngFor 访问嵌套的 json
- microsoft-dynamics - NAV 2016 中的项目开发是否与 AX 2012 类似?
- javascript - 如何检测一个按钮是否在jquery中被折叠?