Мои данные таковы:
ARTICLE Day Row
a 2 10
a 3 10
a 4 10
a 5 10
a 6 10
a 7 10
a 8 10
a 9 10
a 10 10
a 11 10
b 3 1
Я хочу создать новый столбец с именем Date. Во-первых, я группирую данные по СТАТЬЕ. Затем для каждой группы товаров, если строка равна 1, значение в дате совпадает со значением в дне. В противном случае переместите все значения первого дня вверх и установите последнее значение равным 100. Таким образом, новые данные должны выглядеть следующим образом:
ARTICLE Day Row Date
a 2 10 3
a 3 10 4
a 4 10 5
a 5 10 6
a 6 10 7
a 7 10 8
a 8 10 9
a 9 10 10
a 10 10 11
a 11 10 100
b 3 1 3
Я предполагаю, что это может быть сделано с помощью группирования и преобразования Функция берется для создания даты. Итак, мой код:
def myFUN_PostDate1(NRow,Date):
if (NRow.unique()==1):
return Date
else:
Date1 = Date[1:Date.shape[0]]
Date1[Date1.shape[0] + 1] = 19800312
return Date1
a = pd.DataFrame({'ARTICLE': ['a','a','a','a','a','a','a','a','a','a','b'],
'Day': [2,3,4,5,6,7,8,9,10,11,3],
'Row':[10,10,10,10,10,10,10,10,10,10,1]})
a.loc[:,'Date'] = a.groupby(['ARTICLE']).transform(lambda x: myFUN_PostDate1(x.loc[:,'Row'],x.loc[:,'Day']))
Но у меня есть информация об ошибке:
pandas.core.indexing.IndexingError: ('Too many indexers', 'occurred at index Day')
Я также попробовал groupby + np.where. Но у меня та же ошибка.
Я действительно не могу этого понять. Может ли кто-нибудь помочь мне здесь?