Pandas日期时间操纵



我有一个pandas数据帧存储时间单位:

import pandas as pd
d = {
'analysis_datetime': ['2018-07-15 11:50:48+00:00', '2018-07-15 13:22:24+00:00'], 
'processing_duration': [4930, 8101], 
'accessioning_duration': [1032, 2310]
}
df = pd.DataFrame(data=d)

processing_durationaccessioning_duration以分钟为单位。

我想根据以下公式创建一个名为shipping_datetime的新列:

shipping_datetime = analysis_datatime - processing_duration - accessioning_duration

第一次发货_交货时间应为

from datatime import datatime, timedelta
shipping_datetime = datetime.strptime('2018-07-15 11:50:48+00:00', '%Y-%m-%d %H:%M:%S%z') 
- timedelta(minutes=4930) 
- timedelta(minutes=1032)
shipping_datetime.strftime('%Y-%m-%d %H:%M:%S%z')

'2018-07-15 11:50:48+0000'

这是一排。我想创建一个新列,将其应用于所有行。

到目前为止,我拥有的是:

df['shipping_datetime'] = df.apply(lamba x.strftime('%Y-%m-%d %H:%M:%S%z'): 
pd.to_datetime(x.analysis_datetime) 
- timedelta(minutes=x.processing_duration) 
- timedelta(minutes=x.accessioning_duration), axis=1)

我得到一个无效的语法错误。我该怎么做?

我建议不要使用python的datetime。相反,您应该像Pandas系列一样使用Pandas的datetime来处理时间。例如,你可以做:

duration = df[['processing_duration','accessioning_duration']].sum(1)
pd.to_datetime(df['analysis_datetime']) - pd.to_timedelta(duration, unit='min')

输出:

0   2018-07-11 08:28:48+00:00
1   2018-07-08 07:51:24+00:00
dtype: datetime64[ns, UTC]

最新更新