Индекс в группировке данных по времени Pandas

При группировке данных по времени я столкнулся с тем, что сгруппированные данные в первом столбце не являются индексом ... Вывод дт :

                     bid_open  bid_close  tiks  ask_open  ask_close  bid_min  \
0                                                                              
2021-06-28 08:30:00   1.19259    1.19259     5   1.19263    1.19263  1.19259   
2021-06-28 08:31:00   1.19259    1.19269    57   1.19261    1.19271  1.19259   
2021-06-28 08:32:00   1.19269    1.19278    90   1.19272    1.19280  1.19269   
2021-06-28 08:33:00   1.19278    1.19277    62   1.19281    1.19281  1.19276   
2021-06-28 08:34:00   1.19277    1.19282    61   1.19281    1.19283  1.19277   
...                       ...        ...   ...       ...        ...      ...   
2021-06-28 17:14:00   1.19254    1.19248   157   1.19255    1.19251  1.19243   
2021-06-28 17:15:00   1.19248    1.19257    81   1.19252    1.19260  1.19244   
2021-06-28 17:16:00   1.19258    1.19247   107   1.19260    1.19250  1.19244   
2021-06-28 17:17:00   1.19247    1.19275    77   1.19250    1.19278  1.19245   
2021-06-28 17:18:00   1.19275    1.19304    68   1.19278    1.19307  1.19275   

                     bid_max  ask_min  ask_max  qvant      sred      skew  >0  \
0                                                                               
2021-06-28 08:30:00  1.19260  1.19262  1.19263    2.0  0.800000 -0.567163   2   
2021-06-28 08:31:00  1.19269  1.19261  1.19272    2.0  0.456140 -0.182745  25   
2021-06-28 08:32:00  1.19279  1.19271  1.19283    2.0  0.133333 -0.008905  44   
2021-06-28 08:33:00  1.19278  1.19279  1.19282    0.0 -0.032258  0.010950  31   
2021-06-28 08:34:00  1.19283  1.19279  1.19285   -2.0 -0.065574  0.033526  31   
...                      ...      ...      ...    ...       ...       ...  ..   
2021-06-28 17:14:00  1.19258  1.19244  1.19261    2.0 -0.063694 -0.050396  76   
2021-06-28 17:15:00  1.19258  1.19247  1.19262    2.0  0.197531 -0.161537  36   
2021-06-28 17:16:00  1.19260  1.19245  1.19262   -2.0 -0.336449  0.046116  54   
2021-06-28 17:17:00  1.19276  1.19247  1.19279    4.0  1.298701 -0.415599  29   
2021-06-28 17:18:00  1.19308  1.19278  1.19312    2.0  1.117647 -0.398739  26   

                     =0  <0  
0                            
2021-06-28 08:30:00   0   3  
2021-06-28 08:31:00   0  32  
2021-06-28 08:32:00   0  46  
2021-06-28 08:33:00   0  31  
2021-06-28 08:34:00   0  30  
...                  ..  ..  
2021-06-28 17:14:00   0  81  
2021-06-28 17:15:00   0  45  
2021-06-28 17:16:00   0  53  
2021-06-28 17:17:00   0  48  
2021-06-28 17:18:00   0  42  

При выводе индекса print(res.index) выводит :

DatetimeIndex(['2021-06-28 08:30:00', '2021-06-28 08:31:00',
               '2021-06-28 08:32:00', '2021-06-28 08:33:00',
               '2021-06-28 08:34:00', '2021-06-28 08:35:00',
               '2021-06-28 08:36:00', '2021-06-28 08:37:00',
               '2021-06-28 08:38:00', '2021-06-28 08:39:00',
               ...
               '2021-06-28 17:09:00', '2021-06-28 17:10:00',
               '2021-06-28 17:11:00', '2021-06-28 17:12:00',
               '2021-06-28 17:13:00', '2021-06-28 17:14:00',
               '2021-06-28 17:15:00', '2021-06-28 17:16:00',
               '2021-06-28 17:17:00', '2021-06-28 17:18:00'],
              dtype='datetime64[ns]', name=0, length=529, freq='T')

вопрос : каким методом можно обратить столбец "0" в обычный столбец, чтобы можно было обращаться к нему по ключу "0". В данный момент к нему никак не обратиться..

При изменении индекса: res = df.groupby(pd.Grouper(key=0, freq="1T")).agg(**funcs).reset_index() и запросе типа данных : print(res.dtypes)

выводит :

0            datetime64[ns]
bid_open            float64
bid_close           float64
tiks                  int64
ask_open            float64
ask_close           float64
bid_min             float64
bid_max             float64
ask_min             float64
ask_max             float64
qvant               float64
sred                float64
skew                float64
>0                    int64
=0                    int64
<0                    int64
dtype: object

вот как изменить(привести) столбец "0" в формат float64 или int64 ?


Ответы (1 шт):

Автор решения: strawdog

Не совсем ясно, зачем вам это, но, если я правильно понял вопрос, то ваша задача решается довольно просто:

при df:

                     Data
0                        
2021-06-28 08:30:00   100
2021-06-28 08:31:00   101
2021-06-28 08:32:00   102
2021-06-28 08:33:00   103
2021-06-28 08:34:00   104
2021-06-28 08:35:00   105
2021-06-28 08:36:00   106
2021-06-28 08:37:00   107
2021-06-28 08:38:00   108
2021-06-28 08:39:00   109
2021-06-28 17:09:00   110
2021-06-28 17:10:00   111
2021-06-28 17:11:00   112
2021-06-28 17:12:00   113
2021-06-28 17:13:00   114
2021-06-28 17:14:00   115
2021-06-28 17:15:00   116
2021-06-28 17:16:00   117
2021-06-28 17:17:00   118
2021-06-28 17:18:00   119

Достаточно просто сбросить индекс и провести конвертацию:

df = df.reset_index()
df[0] = pd.to_datetime(df[0]).astype('int64')/ 10**9

получаем df:

               0  Data
0   1.624869e+09   100
1   1.624869e+09   101
2   1.624869e+09   102
3   1.624869e+09   103
4   1.624869e+09   104
5   1.624869e+09   105
6   1.624869e+09   106
7   1.624869e+09   107
8   1.624869e+09   108
9   1.624870e+09   109
10  1.624900e+09   110
11  1.624900e+09   111
12  1.624900e+09   112
13  1.624900e+09   113
14  1.624900e+09   114
15  1.624900e+09   115
16  1.624900e+09   116
17  1.624901e+09   117
18  1.624901e+09   118
19  1.624901e+09   119

типы:

print(df.dtypes)
0       float64
Data      int64
→ Ссылка