#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)