Я бы хотел создать простой счетчик в пандах, который увеличивается на единицу каждый раз, когда цикл завершен.Это должно быть просто, но я не могу понять это ... Вот что я хотел бы сделать, с иллюстративным пандой DataFrame:
# Illustrative dataframe
df = pd.DataFrame({'a':[0,0,1,1,0,0,1,1], 'b':[0,1,1,0,0,1,1,0]})
# Initialize counter to zero
counter = 0
# Increment the counter by 1 every time 'a' == 1 and 'b' == 0
df['c'] = [counter += 1 if (df['a'] == 1) and (df['b'] == 0)]
Я был бы счастлив, если бы кто-то показал мне, каксделать это с помощью pandas.apply, используя пользовательскую функцию.По сути, я перебираю каждую запись / строку в DataFrame и сравниваю два столбца.
Я знаю, что, вероятно, мог бы сделать это с помощью numpy.where (), а затем сделать расширенную сумму, но я действительно пытаюсь узнать, как использовать применение с пользовательскими функциями.
Здесьэто другой метод, который я пробовал, с пользовательской функцией и pandas.apply:
counter_list = []
counter = 0
def count_cycles(df):
if (df['a'] == 1) and (df['b'] == 0):
counter += 1
counter_list.append(counter)
return pd.Series(counter_list)
df['c'] = df.apply(count_cycles)