我有一个表,其中有一个“日期”,“时间”,“成本”列。
我想选择时间大于12:00:00的行,然后将1天添加到所选行的“日期”列中。
我应该如何去做?
到目前为止,我有:
df[df['Time']>'12:00:00']['Date'] = df[df['Time']>'12:00:00']['Date'].astype('datetime64[ns]') + timedelta(days=1)
我是学习编码的初学者,任何建议都会对您有所帮助!谢谢。
答案 0 :(得分:0)
如果不是日期时间,首先将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