У меня есть фрейм данных, который содержит эти события:
ID m1 m2 m3 m4
1 xxxx/xxxxx.0183683234 2019-10-28 2019-11-28 2019-11-30 NaT
2 xxxx/xxxxx.0183679721 2019-11-28 2019-11-28 NaT NaT
4 xxxx/xxxxx.0183888975 2019-11-20 2019-12-10 NaT NaT
Эти события происходят во временной последовательности. Это означает, что:
m1 <м2 <м3 <m4 <... <mn </p>
Цель состоит в том, чтобы оценить m3 и m4 до того, как это действительно произойдет.
Для этого я использую masterdata, который дает мне длительность между m2 и m3 и m3 и m4.
Ожидаемый результат:
xxxxxxxxxxID m1 m2 m3 m4 M2_M3 M3_M4 m3_estimated m4_estimated
1 xxxx/xxxxx.0183683234 2019-10-28 2019-11-28 2019-11-30 NaT 2 days 9 days 2019-11-30 2019-12-09
2 xxxx/xxxxx.0183679721 2019-11-28 2019-11-28 NaT NaT 2 days 6 days 2019-11-30 NaT
4 xxxx/xxxxx.0183888975 2019-11-20 2019-12-10 NaT NaT 6 days 1 days 2019-12-16 NaT
Я хочу пересчитатькаждый раз m3 и m4 больше не равны нулю.
Вот функции, которые я пробовал, но они на самом деле не работают:
def m3_estimated(df):
if df['m2']!= None:
return pd.to_datetime(df['m2']) + df['M2_M3']
else:
None
def m4_estimated(df):
if df['m3'] != None:
return pd.to_datetime(df['m3']) + df['M3_M4']
else:
None