【发布时间】:2019-11-07 22:55:31
【问题描述】:
我有一个这种格式的表格:
date
0 2017-03-30 09:59:00
1 2017-03-30 09:59:30
2 2017-03-30 10:00:00
3 2017-03-30 10:00:30
4 2017-03-30 10:01:00
5 2017-03-30 10:01:30
6 2017-03-30 10:02:00
我想做的是计算我表中的天数(从 1 开始),而不是从午夜开始,我希望我的天数从 10:00:00 开始 >。所以对于上表,结果将是:
date day
0 2017-03-30 09:59:00 0
1 2017-03-30 09:59:30 0
2 2017-03-30 10:00:00 1
3 2017-03-30 10:00:30 1
4 2017-03-30 10:01:00 1
5 2017-03-30 10:01:30 1
6 2017-03-30 10:02:00 1
到目前为止,我设法使用以下代码生成了新列:
d=1
hour_before = 10
col_days = []
for row in df.itertuples():
if row.date.hour == 10 and hour_before != 10 :
d+= 1
hour_before = row.date.hour
cols_days.append(d)
df['day'] = col_days
但我希望有一种更优雅(更重要的是,更快)的方式来执行此操作。
有什么建议吗?
【问题讨论】:
-
我相信人们已经厌倦了在 cmets 中看到这个链接,但是每次我在代码中看到
iterrows时,我都会有一种下意识的反应。 DO NOT USE ITERROWS! -
我从来没有看过这个链接,非常感谢你的提示,我会保存它。
标签: python pandas datetime time