Python 将小时-分钟更改为小时结束格式

标签 python python-3.x pandas datetime

我有一个 pandas 数据框:

df
    DateTime    Qty
1/1/2018 0:00    0.6 
1/1/2018 0:15    0.6 
1/1/2018 0:30    0.4 
1/1/2018 0:45    0.5 
1/1/2018 1:00    1.0 
1/1/2018 1:15    0.2 
1/1/2018 1:30    0.2 
1/1/2018 1:45    0.5 
1/1/2018 1:45    0.0 
1/1/2018 2:00    0.3 

我想将上面的数据更改为:

df
DateTime         Qty    DateTime2
1/1/2018 0:00    0.6    1/1/2018 0:00
1/1/2018 0:15    0.6    1/1/2018 1:00
1/1/2018 0:30    0.4    1/1/2018 1:00
1/1/2018 0:45    0.5    1/1/2018 1:00
1/1/2018 1:00    1.0    1/1/2018 1:00
1/1/2018 1:15    0.2    1/1/2018 2:00
1/1/2018 1:30    0.2    1/1/2018 2:00
1/1/2018 1:45    0.5    1/1/2018 2:00
1/1/2018 1:45    0.0    1/1/2018 2:00
1/1/2018 2:00    0.3    1/1/2018 2:00

有没有一种Python式的方法可以做到这一点。我的解决方案是获取分钟,当它大于 15 时,在日期时间小时上添加一个小时

我的解决方案:

df['hrAdder'] = np.where(pd.DatetimeIndex(df['DateTime2'].values).minute >= 15., 1, 0)
df['DateTime3'] = df['DateTime2'] + pd.to_timedelta(df['hrAdder'], unit='h')

最佳答案

设置

df['DateTime'] = pd.to_datetime(df.DateTime)
df['DateTime2'] = df.DateTime
condition = df.DateTime2.dt.minute >= 15

dt.ceilloc

df.loc[condition, 'DateTime2'] = df[condition].DateTime2.dt.ceil(freq='H')

# Result

             DateTime  Qty           DateTime2
0 2018-01-01 00:00:00  0.6 2018-01-01 00:00:00
1 2018-01-01 00:15:00  0.6 2018-01-01 01:00:00
2 2018-01-01 00:30:00  0.4 2018-01-01 01:00:00
3 2018-01-01 00:45:00  0.5 2018-01-01 01:00:00
4 2018-01-01 01:00:00  1.0 2018-01-01 01:00:00
5 2018-01-01 01:15:00  0.2 2018-01-01 02:00:00
6 2018-01-01 01:30:00  0.2 2018-01-01 02:00:00
7 2018-01-01 01:45:00  0.5 2018-01-01 02:00:00
8 2018-01-01 01:45:00  0.0 2018-01-01 02:00:00
9 2018-01-01 02:00:00  0.3 2018-01-01 02:00:00

关于Python 将小时-分钟更改为小时结束格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544855/

相关文章:

python - 匹配器正在返回一些重复项

python - 根据数据确定 Weibull 参数

python - "paramiko.ssh_exception.SSHException: could not get keys from ssh-agent"如何解决

python - 如何量化模型预测是否与 Python 中的预期值接近?

android - 如何解决 "invalid property name"错误以使用kivy制作文件选择器?

python - 如何在 Pandas 中显示正确的日期世纪?

python - matplotlib 图中的刻度标签文本和频率

python - 如何删除数据框中冒号之前的所有内容

python - 将部分 H :M:S durations with missing parts, 转换为秒;或右对齐非 NA 数据

python - 为什么 Flask 不应该与内置服务器一起部署?