Это, должно быть, задавали раньше, но я не мог найти решение - извините, если дубликат!Я сгруппировал по месяцам и годам блок данных с индексом даты и времени (называемый «время») и применил среднее значение df = df.groupby([df.index.year, df.index.month]).mean()
, которое дало следующее:
0
time time
2000 1 0.245888
2 0.579210
3 0.519101
4 1.724130
5 2.909998
6 6.754044
7 5.654214
8 0.972300
9 0.207180
10 -0.608038
11 -2.271975
12 -9.407542
2001 1 -4.206406
2 0.339256
3 2.447668
4 2.159161
5 2.014476
6 4.495522
7 2.130116
8 4.280266
9 2.329842
10 -1.560461
11 -2.232722
12 -2.182392
У него есть 2 индекса, оба из которых называются «время»., соответствующий году и месяцу.Теперь я хочу нарезать по месяцам (создать новый фрейм данных с месяцем = 1 или месяцем от 6 до 8 и т. Д.), Но я не уверен, как сделать операцию над этим.
Я хочу сделать что-то вроде:
df.loc[(df.index.month == 1)]
df.loc[(df.index.month == 1) | (df.index.month == 2)]
df.loc[(df.index.month >= 1) & (df.index.month <= 6)]
и т. Д.
При этом получается AttributeError: 'MultiIndex' object has no attribute 'month'
(понятно).Я попытался переименовать индекс с df.rename(['year', 'month'])
, что дает AttributeError list object is not callable
.Я подумал, что, возможно, мне нужно сбросить индекс, чтобы он снова был в формате datetime, но df.reset_index()
дает ValueError cannot insert time
.
df.index дает:
MultiIndex(levels=[[2000, 2001], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]],
codes=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]],
names=['time', 'time'])
Редактировать - 1. Отредактировано, чтобы сказать, что я хочу более гибкую операцию нарезки, а не просто получить конкретный месяц.2. Оригинал df выглядел так:
0
time
2000-01-01 1.427332
2000-01-02 1.468405
2000-01-03 1.525916
2000-01-04 1.399915
2000-01-05 1.192117
2000-01-06 1.191234
2000-01-07 1.431109
2000-01-08 1.687709
2000-01-09 1.876527
2000-01-10 1.871062
2000-01-11 1.759002
2000-01-12 1.553009
2000-01-13 1.336487
2000-01-14 1.105376
2000-01-15 0.732866
2000-01-16 0.259119
2000-01-17 -0.003458
2000-01-18 -0.180170
2000-01-19 -0.275862
2000-01-20 -0.580456
2000-01-21 -0.800049
2000-01-22 -0.990277
2000-01-23 -1.139482
2000-01-24 -1.264528
2000-01-25 -1.378858
2000-01-26 -1.516954
2000-01-27 -1.394427
2000-01-28 -1.371782
2000-01-29 -1.337087
2000-01-30 -1.120146
... ...
2001-12-02 -4.521928
2001-12-03 -4.499393
2001-12-04 -4.425628
2001-12-05 -4.270720
2001-12-06 -4.286983
2001-12-07 -4.141410
2001-12-08 -3.886460
2001-12-09 -4.008633
2001-12-10 -3.772096
2001-12-11 -3.261724
2001-12-12 -3.271314
2001-12-13 -3.306891
2001-12-14 -3.111070
2001-12-15 -2.694092
2001-12-16 -2.063524
2001-12-17 -1.593670
2001-12-18 -1.279061
2001-12-19 -0.957185
2001-12-20 -0.616801
2001-12-21 -0.316757
2001-12-22 -0.292797
2001-12-23 -0.226818
2001-12-24 -0.196901
2001-12-25 -0.237203
2001-12-26 -0.221769
2001-12-27 -0.167911
2001-12-28 -0.050808
2001-12-29 -0.044765
2001-12-30 -0.384740
2001-12-31 -0.913277
730 rows × 1 columns