数据
res=pd.DataFrame({'period':['s', 'e', 's', 'e'], 'lapse':[-1.0, 1.0, -1, 1],'date':['1975-02-25 09:39:39.914889', '1976-03-25 09:41:09.103102', '1978-05-25 10:39:58.352073', '1979-09-25 10:40:06.266782']})
我需要迭代选择lapse==-1
失误并更改hour
和minute
使用以下内容,我可以选择和更改它们,但是那也更改了年份。
res['date']=pd.to_datetime(res['date'])
a=res[(res['lapse']==-1.0) & (res['period']=='s')]
a['date']=pd.Timestamp.replace(a.loc[0,'date'], hour=18, minute=15)
那不是我想要的。我正在处理0ver 20,000个土地记录,因此我需要遍历所有记录。我试过了
import datetime
for index, row in a.iterrows():
print(row['date'])
row['date']=pd.Timestamp.replace(row['date'], hour=17, minute=15)
期望的结果
您可以date
按掩码过滤的行,并仅更改以下值的日期时间:
res['date']=pd.to_datetime(res['date'])
m= (res['lapse']==-1.0) & (res['period']=='s')
res.loc[m, 'date']= res.loc[m, 'date'].apply(lambda x: x.replace(hour=18, minute=15))
#alternative solution
#res.loc[m, 'date']= res.loc[m, 'date'] + pd.offsets.DateOffset(hour=18, minute=15)
print (res)
period lapse date
0 s -1.0 1975-02-25 18:15:39.914888992
1 e 1.0 1976-03-25 09:41:09.103102016
2 s -1.0 1978-05-25 18:15:58.352072992
3 e 1.0 1979-09-25 10:40:06.266782016
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句