python - 在日期列的选择性时间段中添加 1 天
问题描述
我有一个表格,其中有一列“日期”、“时间”、“成本”。
我想选择时间大于 12:00:00 的行,然后在所选行的“日期”列中添加 1 天。
我该怎么做呢?
到目前为止,我有:
df[df['Time']>'12:00:00']['Date'] = df[df['Time']>'12:00:00']['Date'].astype('datetime64[ns]') + timedelta(days=1)
我是学习编码的初学者,任何建议都会非常有帮助!谢谢。
解决方案
如果不是日期时间,则to_datetime
首先用于列,然后将列转换为字符串(如果可能),转换为日期时间并按条件获取,比较并添加日期:Date
Time
python time
hours
Series.dt.hour
1
df = pd.DataFrame({'Date':['2015-01-02','2016-05-08'],
'Time':['10:00:00','15:00:00']})
print (df)
Date Time
0 2015-01-02 10:00:00
1 2016-05-08 15:00:00
df['Date'] = pd.to_datetime(df['Date'])
mask = pd.to_datetime(df['Time'].astype(str)).dt.hour > 12
df.loc[mask, 'Date'] += pd.Timedelta(days=1)
print (df)
Date Time
0 2015-01-02 10:00:00
1 2016-05-09 15:00:00
推荐阅读
- asp.net - ERROR DI (AggregateException: 某些服务无法构建)
- powershell - Copy-item 复制文件夹并更改时间戳(不保留时间戳)
- c# - 如何在 C# 中正确使用函数的返回值
- azure - Azure 中的悬空 DNS
- python - 定义函数时“重载”变量
- javascript - JavaScript 切换语句。以下是正确的js
- listview - WebView 中的超链接与 SfListView 中的滚动指示器冲突
- java - 如何在 Spring Webflux 中将 java.time.Instant 序列化为 ISO 字符串
- xamarin - Calling method from ViewModel cause System.NullReferenceException
- javascript - 在使用 cloud firestore .get() doc.exists 时,即使文档存在,它也始终保持未定义