Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 时间操纵_Python_Pandas_Apply - Fatal编程技术网

Python 时间操纵

Python 时间操纵,python,pandas,apply,Python,Pandas,Apply,我有一个存储时间单位的数据帧: 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) 列

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

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\u duration
accessing\u duration
以分钟为单位

我想根据以下公式创建一个名为
shipping\u 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的
datetime
来处理时间,就像Pandas系列一样。例如,您可以执行以下操作:

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]