2017-02-20 8 views
3

Я работаю с пандой Dataframe, который выглядит следующим образом:DataFrame: fillna() с управлением суммой действительных значений

0 Data 
1 
2 
3 
4 5 
5 
6 
7 
8 21 
9 
10 2 
11 
12 
13 
14 
15 

Я пытаюсь заполнить пробел со следующими допустимыми значениями по: ФРУ. fillna (метод = 'засыпки'). Это работает, но мне нужно добавить предыдущее действительное значение к следующему допустимому значению, снизу вверх, например:

0 Data 
1 28 
2 28 
3 28 
4 28 
5 23 
6 23 
7 23 
8 23 
9 2 
10 2 
11 
12 
13 
14 
15 

я могу получить эту работу, обернув над ним, но есть способ в пандах, которые могут это сделать?

Большое спасибо!

ответ

4

Вы могли бы обратить Д.Ф., затем fillna(0) и затем cumsum и реверс снова:

In [12]: 

df = df[::-1].fillna(0).cumsum()[::-1] 
df 
Out[12]: 
    Data 
0 28.0 
1 28.0 
2 28.0 
3 28.0 
4 23.0 
5 23.0 
6 23.0 
7 23.0 
8 2.0 
9 2.0 
10 0.0 
11 0.0 
12 0.0 
13 0.0 
14 0.0 

здесь мы используем нарезку обозначения для обратного ФРА, а затем заменить все NaN с 0, выполнять cumsum и обратные назад

2

Другой простой способ сделать это: df.sum()-df.fillna(0).cumsum()

+0

очень хороший метод +1 – EdChum

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