我正在尝试迭代一个DataFrame,当值改变时,增加计数器,然后将一个新列设置为该值。我能够使用全局计数器使其工作,例如:
def change_ind(row):
global prev_row
global k
if row['rep'] != prev_row:
k = k+1
prev_row = row['rep']
return k
但是当我尝试向apply函数传递参数时,如下所示,它不再起作用。似乎每次操作新行时都会重置k、prev_row的值。有没有一种方法可以向函数传递参数并获得我想要的结果?或者有更好的方法来完成这个任务吗?
def change_ind(row, k, prev_row):
if row != prev_row:
k = k+1
prev_row = row
return k
df['rep'] = (df['rep'] != df['rep'].shift()).cumsum()
来完成相同的操作。 - EdChumk += 1
来增加计数器。 - Jeff