Я пытаюсь преобразовать код R в код Python и застрял на этом этапе. Можете ли вы сказать мне, как лучше всего реализовать этот фрагмент кода в Python?
only0_0$count =0
for(i in 2:length(only0_0$ID))
{
only0_0$count[i]=ifelse((only0_0$year[i]-1) %in%
clientData$Year[clientData$CUSTOMERID %in% only0_0$ID[i]],1,0)
}
Задний план:
Псевдокод:
для цикла, начинающегося со второго наблюдения до последнего, заполните переменную count следующим образом:
например вывод последнего шага: {2006, 2008, 2009, 2006}
скажем: вывод (only0_0.year - 1) == 2008
Дайте мне знать, если это ясно сейчас.
Добавлен псевдокод. Дайте мне знать, если это поможет.
Можете ли вы предоставить пример таблицы (ввод и вывод) (были бы полезны некоторые более удобные для пользователя имена переменных, но я мог бы обойтись с таблицей ввода и вывода).
Также добавлен пример.
Не зная, что такое only0_0
и clientData
конкретно, это довольно сложно, но вот несколько фрагментов, которые должны вам помочь:
Я предполагаю, что only0_0
— это pandas.DataFrame
, а clientData
словарь, потому что он не содержит унифицированных данных.
Так, например.
import pandas as pd
clientData = {'Year': [..., ...], 'CUSTOMERID_transformed': ....}
only0_0 = pd. DataFrame({'count': [1, 2, 3, ...], 'year': [2010, 2012, 2019, ...]})
only0_0.loc[i, 'count'] = 0
for i in range(1, only0_0.shape[0]): # i.e. skipping the first row
only0_0.loc[i, 'count'] = 0 if ... else 1
или
... = int(1-bool(...))
но я думаю, что писать более питонически
if ...:
only0_0.loc[i, 'count'] = 0
else:
only0_0.loc[i, 'count'] = 1
Теперь о состоянии, я думаю, что это что-то, состоящее из
(only0_0.loc[i, 'year'] - i) in clientData['Year'][...]
а также
clientData['CUSTOMERID_transformed'] in only0_0.loc[i, 'ID0_0']
Обновлено: Ваша заметка предполагает скорее
only0_0.loc[i, 'ID0_0'] in clientData['CUSTOMERID_transformed']
Я надеюсь, что это поможет вам идти.
Спасибо. Попробую это реализовать. Будет обновлять вас.
Большое спасибо. Я получил ответ в соответствии с вашим предложением.
Спасибо, я получил ответ.
if ((only0_0.year[i] - 1) in (clientData['Year'][clientData['CUSTOMERID_transformed'] == only0_0.loc[i, 'ID0_0']].values)):
only0_0.loc[i,"count"]=1
else:
only0_0.loc[i,"count"]=0
Можете ли вы превратить его в псевдокод или грубый код C? (не нужно запускать) Легко дать вам краткое решение на Python, но его довольно сложно прочитать
r
до такой степени без опыта в этом.