2017-02-20 5 views
1

Я работаю над программой анализа запасов и вам нужно найти суммы «SPLIT» из «UNP_action», а затем скопировать соответствующий «UNP_action_amount» в строки над ним только.DataFrame: если значение в ячейке, скопируйте значение в ячейки ниже него

Я могу сделать это сложным способом с помощью циклов, но мне интересно, есть ли более эффективный способ сделать это в Pandas.

ток:

Date  UNP_Adj_Close UNP_action UNP_action_amount 
2008-05-23 31.83157   
2008-05-27 33.032365  
2008-05-28 32.965423  
2008-05-29 33.61812  SPLIT  0.5 
2008-05-30 34.438176  

Желаемая:

Date UNP_Adj_Close UNP_action UNP_action_amount 
2008-05-23 31.83157    0.5 
2008-05-27 33.032365    0.5 
2008-05-28 32.965423    0.5 
2008-05-29 33.61812 SPLIT  0.5 
2008-05-30 34.438176 

Любые предложения будут оценены, спасибо!

ответ

2

Если для каждой расчётной строки есть соответствующее значение для заполнения, вы можете просто использовать fillna с методом backfill для распространения значений в обратном направлении.

df.UNP_action_amount.fillna(method='backfill') 

Demo

>>> df 
    data 
0 NaN 
1 NaN 
2 3.0 
3 NaN 
4 NaN 
5 2.0 
6 NaN 
7 NaN 
8 NaN 

>>> df.data.fillna(method='backfill') 
0 3.0 
1 3.0 
2 3.0 
3 2.0 
4 2.0 
5 2.0 
6 NaN 
7 NaN 
+0

Спасибо большое, это очень помогает! –

+0

Добро пожаловать. – miradulo

+0

Не могли бы вы взглянуть на обновление в исходном вопросе? –

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