【问题标题】:Adding 1 day to selective time period of date column在日期列的选择性时间段中添加 1 天
【发布时间】:2019-04-17 21:43:30
【问题描述】:

我有一个表格,其中有一列“日期”、“时间”、“成本”。

我想选择时间大于 12:00:00 的行,然后在所选行的“日期”列中添加 1 天。

我应该怎么做呢?

到目前为止我有:

df[df['Time']>'12:00:00']['Date'] = df[df['Time']>'12:00:00']['Date'].astype('datetime64[ns]') + timedelta(days=1)

我是学习编码的初学者,任何建议都会非常有帮助!谢谢。

【问题讨论】:

  • 这似乎与pandas有关,所以你应该添加适当的标签。
  • 你的时间栏是什么类型的?
  • 谢谢我已经更新了标签。数据类型是对象。

标签: python pandas datetime


【解决方案1】:

如果不是日期时间,则首先将to_datetime 用于列Date,然后将列Time 转换为字符串python times,转换为日期时间并通过Series.dt.hour 获取hours,比较并添加@987654329 @逐日条件:

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

【讨论】:

  • 谢谢!它在我运行时起作用: from datetime import timedelta df.loc[df['Time'] > '12:00:00','Date'] = df.loc[df['Time'] > '12:00: 00','Date'].astype('datetime64') + timedelta(days=1)
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 2015-10-28
  • 2018-02-13
  • 2015-02-06
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多