Найти повторяющиеся строки и заполнить на основе предыдущего значения из другого столбца - PullRequest
0 голосов
/ 04 мая 2020

Привет. Итак, у меня есть два таких фрейма данных:

df_1: 
      EntryDate     Open  
0    2006-01-16       5     
1    2006-01-17      NaN     
2    2006-01-18      NaN    
3    2006-01-19       5     
4    2006-01-20      NaN  
.    ..........      ...
.    ..........      ...


df_2:
      EntryDate     close  
0    2006-01-16       5     
1    2006-01-17      10    
2    2006-01-18      15    
3    2006-01-19       20     
4    2006-01-20      25  
.    ..........      ...
.    ..........      ...

df_1 имеет дублированные строки, которые имеют одинаковую EntryDate, в то время как df_2 имеет уникальные строки. Я хочу сделать следующее:

  1. создать еще один столбец в df_1, сопоставив EntryDate из обоих фреймов данных, и его значением будет значение закрытия, в котором он совпадает.
  2. Для дублированных строк значение их закрытия должно иметь такое же значение закрытия
  3. Для значений NaN в столбце Open я хочу изменить их на закрытие предыдущего дня.

поэтому вывод должен быть

df_1: 
      EntryDate     Open   Close
0    2006-01-16       5       5
1    2006-01-17       5      10
2    2006-01-18       10     15
3    2006-01-19       15     20
4    2006-01-20       20     25
.    ..........      ...     ...
.    ..........      ...     ...

То, что я пробовал для чисел 1 и 2, таково:

df_1['close'] = df_2.Close.loc[(df_2.EntryDate.isin(df_1['EntryDate']))]

df_1.loc[df_1.duplicated(['EntryDate'],keep='first')] = df_1.close.reindex(pd.RangeIndex(df_1.close.index.max() + 1)).ffill()

Однако, когда я пробовал это, df_1.close возвращает NaN ценности. Буду признателен за чью-то помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...