Как обрабатывать ячейки, содержащие только значения NaN в pandas?

#python #pandas #time-series

#python #pandas #временные ряды

Вопрос:

Я настраиваю набор данных для прогнозирования цен на акции, применяя следующий код для индикатора облака Ишимоку:

 from datetime import timedelta
high_9 = df['High'].rolling(window= 9).max()
low_9 = df['Low'].rolling(window= 9).min()
df['tenkan_sen'] = (high_9   low_9) /2

high_26 = df['High'].rolling(window= 26).max()
low_26 = df['Low'].rolling(window= 26).min()
df['kijun_sen'] = (high_26   low_26) /2

# this is to extend the 'df' in future for 26 days
# the 'df' here is numerical indexed df
# the problem is here
last_index = df.iloc[-1:].index[0]
last_date = df['Date'].iloc[-1].date()
for i in range(26):
    df.loc[last_index 1  i, 'Date'] = last_date   timedelta(days=i)

df['senkou_span_a'] = ((df['tenkan_sen']   df['kijun_sen']) / 2).shift(26)

high_52 = df['High'].rolling(window= 52).max()
low_52 = df['Low'].rolling(window= 52).min()
df['senkou_span_b'] = ((high_52   low_52) /2).shift(26)

# most charting softwares dont plot this line
df['chikou_span'] = df['Close'].shift(-26)   
 

Приведенный выше код отлично работает, но проблема заключается в том, что при распространении на следующие 26 временных шагов (строк) в столбцах ‘senoku span a’ и ‘b’ значения строк других столбцов rest преобразуются в NaN.

Итак, мне нужна помощь, чтобы сделать ‘Senoku span a’ и ‘Senoku span b’ прогнозируемыми строками в моем наборе данных, не делая другие строки равными NaN.

Текущий вывод:

 Date      Open    High     Low   Close   Senoku span a    Senoku span b
2019-03-16 50      51       52     53      56.0               55.82
2019-03-17 NaN     NaN     NaN     NaN     55.0               56.42
2019-03-18 NaN     NaN     NaN     NaN     54.0               57.72
2019-03-19 NaN     NaN     NaN     NaN     53.0               58.12
2019-03-20 NaN     NaN     NaN     NaN     52.0               59.52
 

Ожидаемый результат:

 Date      Open    High     Low   Close   Senoku span a    Senoku span b
2019-03-16  50      51       52     53     56.0               55.82
2019-03-17                                 55.0               56.42
2019-03-18                                 54.0               57.72
2019-03-19                                 53.0               58.12
2019-03-20                                 52.0               59.52
 

Комментарии:

1. какой ожидаемый результат вы хотите

2. Я хочу, чтобы предсказанные значения столбцов были в моем наборе данных без преобразования каких-либо других значений в NaN.

3. df = df.fillna(«»)

4. да, вы можете использовать df = df.fillna(«») в конечном фрейме данных. или вы можете применить его к определенным столбцам, например, df[‘open’] = df[‘open’].fillna(«»)

5. Но этот код создает проблемы для применения других кодов, при применении с другими кодами он показывает ошибку как: неподдерживаемый тип (ы) операнда для -: ‘str’ и ‘float’