2016-09-21 13 views
0

Есть ли какая-либо функция в пандах для моделирования формулы excel, например '= sum ($ A $ 1: A10' (для 10-й строки), то есть формула должна принимать скользящие данные из 1-й строки ..Функция для вычисления значения из первой строки в Python Pandas

Панды функция прокатки нуждается в целое значение в качестве аргумента окна

+0

Пожалуйста, проверьте [Как сделать хорошие воспроизводимые примеры pandas] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – jezrael

+0

Вместо 30 аргументов для поворота окна для катания, есть ли способ сделать его динамическим (номер строки). прокатки (30) .Нанесите (FUNC = np.percentile, арг = (0,90)). Как формулы excel $ A $ 1: текущие ячейки? –

+0

Я не уверен, но это похоже на цикл потребности. – jezrael

ответ

2

эквивалент =SUM($A$1:A1) в панд .expanding().sum() (требуется панд 0.18.0):

ser = pd.Series([1, 2, 3, 4]) 

ser 
Out[3]: 
0 1 
1 2 
2 3 
3 4 
dtype: int64 

ser.expanding().sum() 
Out[4]: 
0  1.0 
1  3.0 
2  6.0 
3 10.0 

Вы также можете применить обобщенную функцию через заявку:

ser.expanding().apply(lambda x: np.percentile(x, 90)) 
Out: 
0 1.0 
1 1.9 
2 2.8 
3 3.7 
dtype: float64 

Или непосредственно квантиль:

ser.expanding().quantile(0.9) 
Out[15]: 
0 1.0 
1 1.0 
2 2.0 
3 3.0 
dtype: float64 

Обратите внимание, что 90-й процентиль равен 0.9th квантиль. Однако Series.quantile и Series.expanding.quantile возвращают разные результаты, которые, вероятно, a bug.

np.percentile возвращает те же результаты, что и PERCENTILE.INC Excel. Для PERCENTILE.EXC я ранее написал небольшую функцию here.

+0

Спасибо .. это похоже на то, что нужно, но значения процентиля не совпадают с значениями excel (видно, что они неправильны даже визуально). процентиль (0,9) должен быть 1,93 2,86 3,79 –

+0

@ChandanKumar Для 90-го процентиля вам необходимо передать 90 в качестве параметра. Однако Series.expanding.quantile кажется багги, поэтому лучше использовать версию numpy прямо сейчас. – ayhan

Смежные вопросы