Почему мой индекс фрейма данных меняется, когда я использую sub?

#python #pandas

#питон #панды

Вопрос:

У меня есть два фрейма данных. Они начинаются в начале декабря 2020 года и заканчиваются 12 января 2021 года.

 difference = e_forecasts.loc[:, e_forecasts.columns.str.contains('fc')]).sub(productions.loc[:, productions.columns.str.contains('fc')].iloc[:,0], axis = 0)
 
 e_forecasts.head(5)

date                                   fc_fda_A                    fc_f240_A               ...                                                                        ...
2020-12-01 00:00:00                        8.40                         6.44                         6.27  ...                         3.71                        4.66                        5.05       
2020-12-01 01:00:00                        7.86                         5.92                         4.32  ...                         0.78                        0.00                        0.00       
2020-12-01 02:00:00                        8.53                         5.25                         5.63  ...                         0.00                        0.00                        0.00       
2020-12-01 03:00:00                       10.62                         7.45                         5.88  ...                         0.00                        0.02                        0.20       
2020-12-01 04:00:00                       11.61                         6.87                         6.43  ...                         1.21                        1.20                        0.74
 
 productions.head(5)
                                    A                B                 C              D      E
date
2020-12-01 00:00:00               1.7             5.53             50.30             1.49                 0
2020-12-01 01:00:00               2.1            11.90             48.45             0.45                 1
2020-12-01 02:00:00               1.8             8.71             40.19             0.00                 0
2020-12-01 03:00:00               3.8            10.44             33.56             0.00                 0
2020-12-01 04:00:00               3.7             3.00             18.78             0.00                 2

 
 difference:
                                       fc_fda_A                    fc_f240_A  
date
2020-01-12 00:00:00                         NaN                          NaN                          NaN                          NaN                         NaN                         NaN
2020-01-12 01:00:00                         NaN                          NaN                          NaN                          NaN                         NaN                         NaN
2020-01-12 02:00:00                         NaN                          NaN                          NaN                          NaN                         NaN                         NaN
2020-01-12 03:00:00                         NaN                          NaN                          NaN                          NaN                         NaN                         NaN
2020-01-12 04:00:00                         NaN                          NaN                          NaN                          NaN                         NaN                         NaN
...                                         ...                          ...                          ...                          ...                         ...                         ...
2021-01-12 19:00:00                        2.27                         5.32                         6.47                         3.16                        1.58                        1.58
2021-01-12 20:00:00                       -2.62                         1.51                        -0.92                        -2.21                       -2.93                        1.50
2021-01-12 21:00:00                       -0.27                         0.87                        -0.18                        -0.77                       -0.62                       -0.62
2021-01-12 22:00:00                       19.02                        19.85                        19.37                        19.41                       22.02                       21.61
2021-01-12 23:00:00                       10.16                        11.48                        11.43                        13.97                       10.14                       10.14

 

Когда я печатаю разницу, индекс фрейма данных разницы меняется. Это начинается с начала 2020 года со значениями NaN. Я не понимаю, в чем проблема? Кто-нибудь может мне помочь?

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

1. Можете ли вы добавить некоторые примеры данных, 3-4 строки, 2-3 столбца?

Ответ №1:

Я думаю, что проблема не в DatetimeIndex в обоих фреймах данных:

 e_forecasts.index = pd.to_datetime(e_forecasts.index)
productions.index = pd.to_datetime(productions.index)
 

Тогда решение должно быть проще:

 df1 = e_forecasts.filter(like='fc')
df2 = productions.filter(like='fc')

difference = df1.sub(df2.iloc[:,0], axis = 0)
 

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

1. Это решение мне не помогло, но я работаю над этим, спасибо Израэль.

2. @JuniorESE — хммм, если нет, это означает, что в datetimeindex разные значения, поэтому nans . Если нужны исходные значения difference = df1.sub(df2.iloc[:,0], axis = 0, fill_value=0)