Я пытаюсь объединить несколько относительно простых условий в предложение np.where, но у меня возникают проблемы с синтаксисом логики.
Мой текущий фрейм данных выглядит как df ниже, с четырьмя столбцами.Я хотел бы добавить два столбца, названных ниже, со следующими условиями:
Требуемый вывод ниже - df df_so_v2
Дни с момента активности * Найдите самую последнюю предыдущую строку с тем же идентификатором, затем вычтите столбец дат * Если нет последнего значения, верните NA
Chg.Avg.Значение Условие 1: Если Count = 0, NA Условие 2: Если Count! = 0, найдите самую последнюю предыдущую строку с ОБА и тем же идентификатором и Count! = 0, затем найдите разницу в Avg.Столбец значения.
Однако я строю простые запросы np.where, подобные приведенным ниже, и не знаю, как объединить несколько условий, необходимых в этом случае.
df['CASH'] = np.where(df['CASH'] != 0, df['CASH'] + commission , df['CASH'])
Большое спасибо за помощь в этом.
df_dict={'DateOf': ['2017-08-07','2017-08-07','2017-08-07','2017-08-04','2017-08-04','2017-08-04'
, '2017-08-03','2017-08-03','2017-08-03','2017-08-02','2017-08-02','2017-08-02','2017-08-01','2017-08-01','2017-08-01'],
'ID': ['553','559','914','553','559','914','553','559','914','553','559','914','553','559','914'], 'Count': [0, 4, 5, 0, 11, 10, 3, 9, 0,1,0,2,4,4,0],
'Avg. Value': [0,3.5,2.2,0,4.2,3.3,5.3,5,0,3,0,2,4.4,6.4,0]}
df_so=pd.DataFrame(df_dict)
df_dict_v2={'DateOf': ['2017-08-07','2017-08-07','2017-08-07','2017-08-04','2017-08-04','2017-08-04'
, '2017-08-03','2017-08-03','2017-08-03','2017-08-02','2017-08-02','2017-08-02','2017-08-01','2017-08-01','2017-08-01'],
'ID': ['553','559','914','553','559','914','553','559','914','553','559','914','553','559','914'], 'Count': [0, 4, 5, 0, 11, 10, 3, 9, 0,1,0,2,4,4,0],
'Avg. Value': [0,3.5,2.2,0,4.2,3.3,5.3,5,0,3,0,2,4.4,6.4,0],
'Days_since_activity': [4,3,1,1,1,2,1,2,1,1,1,1,'NA','NA','NA'],
'Chg. Avg Value': ['NA',-0.7,-1.1,'NA',-0.8,1.3,2.3,-1.4,'NA',-1.4,'NA','NA','NA','NA','NA']
}
df_so_v2=pd.DataFrame(df_dict_v2)