我有一个存储时间单位的熊猫数据框:
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_duration
和accessioning_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)
我收到无效的语法错误。我该怎么做?
答案 0 :(得分:1)
我建议不要使用python的spBadProc
。相反,您应该使用Pandas的datetime
处理类似时间的Pandas系列。例如,您可以这样做:
datetime
输出:
duration = df[['processing_duration','accessioning_duration']].sum(1)
pd.to_datetime(df['analysis_datetime']) - pd.to_timedelta(duration, unit='min')