У меня есть пространственный и временной df:
'date' 'spatial_pixel' 'column_A' ...
---- ----- ---
2012-04-01 | 1000 | 5
2012-04-01 | 1001 | 1
... ... ...
Мне нужен столбец (сгруппированный по "spatial_pixel" и "date"), который подсчитывает количество дней подряд, когда встречается логическое значение. Произнесите 'column_A' ‹ 2:
'date' 'spatial_pixel' 'column_A' 'days-in-a-row' ...
---- ----- --- ----
2012-03-30 | 1001 | 5 | 0
2012-04-01 | 1001 | 1 | 1
2012-04-02 | 1001 | 1 | 2
2012-04-03 | 1001 | 3 | 0
... ... ... ...
Мои попытки:
Во-первых, я создал новый кадр данных, в котором, когда логическое значение равно True ('column_A'‹ 2), записывается номер дня месяца (например, 1,2,3,....28,29,30). (Однако мне нужно, чтобы он находился в диапазоне от 1 до 365, чтобы конец месяцев и начало месяцев легко определялись как последовательные).
'date' 'spatial_pixel' 'column_A' 'day' ...
---- ----- --- ----
2012-03-30 | 1001 | 5 | NaN
2012-04-01 | 1001 | 1 | 1
2012-04-02 | 1001 | 1 | 2
2012-04-03 | 1001 | 3 | NaN
2012-04-30 | 1001 | 1 | 30
2012-04-31 | 1001 | 1 | 31
... ... ... ...
Второй,
Я безуспешно пытался создать новый столбец, который подсчитывает количество последовательных дней в месяце, используя модифицированный код из @ZJS: Pandas: условный счетчик.
def rolling_count(val):
if val == rolling_count.previous + 1 :
rolling_count.count +=1
else:
rolling_count.previous = val
rolling_count.count = 1
return rolling_count.count
rolling_count.count = 0 #static variable
rolling_count.previous = None #static variable
df['count'] == df.groupby(['spatial_pixel','date'])['day'].apply(rolling_count)
KeyError: 'count'
Любая помощь будет принята с благодарностью!