2014-11-09 3 views
0

Я хочу вычислить статистику всплывающих окон, но с минимальным количеством периодов 3, а не 1. То есть, я хочу, чтобы он начал вычислять статистику после окна из трех значений, а затем включить все значения вплоть до этого момента:Расширение окна Pandas с min_periods

value  expanding_min 
------------------------ 
6   NaN 
5   NaN 
2   NaN 
3   2 
1   1 

однако, используя

df['expanding_min']= df.groupby(groupby)['value'].transform(lambda x: pd.rolling_min(x, window=len(x), min_periods=3)) 

или

df['expanding_min']= df.groupby(groupby)['value'].transform(lambda x: pd.expanding_min(x, min_periods=3)) 

я получаю следующее сообщение об ошибке:

ValueError: min_periods (3) must be <= window (1) 
+0

решение было опубликовано ниже? – user308827

+0

Мое описание было немного упрощено. Я отредактировал его выше. Но в основном я хочу записать это в новый столбец в dataframe. Я не думаю, что могу использовать pd.expanding_min, потому что получаю ошибку AttributeError: объект 'Series' не имеет атрибута 'type' – user3591836

+0

И, с любопытством, если я поместил min_periods = 5 в код выше (вместо 3), тогда Я получаю ValueError: инвалидное min_periods размера-больше, чем окно 3 Или, если я ставлю 15, я получаю ValueError: инвалидное min_periods размера 15 больше, чем окна 8 – user3591836

ответ

1

Это работает для меня, меняется от значения к df.value:

pd.expanding_min(df.value, min_periods=3) 

или

pd.rolling_min(df.value, window=len(df.value), min_periods=3) 

как выход:

0 NaN 
1 NaN 
2  2 
3  2 
4  1 
dtype: float64 

Возможно, ваше окно установлено какое-то другое значение, длина которого равна 1? Вот почему pandas дает сообщение об ошибке