【发布时间】:2020-01-16 06:24:42
【问题描述】:
我有一个这样的数据框:
Milestone Initial_Date Next_Date Buffer Buffer1
-------------------------------------------------------
M0 11/1/2020 13/1/2020 6 1
M1 13/1/2020 15/1/2020 3 1
M0 24/12/2019 25/12/2019 4 2
M1 16/12/2019 21/12/2019 9 2
M0 8/1/2020 14/1/2020 10 1
M2 6/1/2020 9/1/2020 5 2
M3 18/1/2020 21/1/2020 3 4
我将以下逻辑应用于数据框
CASE
WHEN milestone = 'M0' THEN Intial_date + Buffer
WHEN milestone = 'M1' THEN Next_datee + Buffer
WHEN milestone >= 'M2' THEN Intial_date + Buffer1
ELSE NULL
END AS Result
预期输出:
Result
------------
17/1/2020
18/1/2020
28/12/2019
30/12/2019
18/1/2020
8/1/2020
22/1/2020
我的代码:
#data 字段的数据类型为 datetime64[ns],Buffer 为 float64
data['Milestone'] = pd.Categorical(data['Milestone'],categories=['00','M0','M1','M2','M3','M4','M5','M6','M7'],ordered=True)
buffer = pd.to_timedelta(final_result['Buffer'], unit='d')
buffer1 = pd.to_timedelta(final_result['Buffer1'], unit='d')
data['Result'] =np.select([data['Milestone']=='M0',data['Milestone']=='M1',
data[MILESTONE']>='M2']
,[data['Initial_Date']+Buffer,data['Next_Date']+Buffer,
data['Initial_Date']+Buffer1)
我收到一个错误
TypeError: 无效的类型提升
从上面的代码。你能帮我解决这个问题吗?
【问题讨论】:
标签: python-3.x pandas dataframe datetime