Доступ к двум строкам с использованием индекса, когда типом индекса является Datetime в Pandas? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть pandas Dataframe df1, как показано ниже

print(df1)
    W  X  Y  Z
A -10 -9 -8 -7
B  -6 -5 -4 -3
C  -2 -1  0  1
D   2  3  4  5
E   6  7  8  9

И я попытался получить доступ к «A» и «B», как показано ниже

print (df1.loc[['A','B'], :])

    W  X  Y  Z
A -10 -9 -8 -7
B  -6 -5 -4 -3

так же, как у меня продажи как показано ниже, где тип данных Date - Datetime;

print(sales.head())
                 Col1    Col2        Col3        Col4        Col5        Col6
Date                                                                          
2015-01-02    0.000559  0.002772   0.002992   -0.001438  -0.002320   -0.002189
2015-01-05   -0.029050 -0.031515  -0.031223   -0.031045  -0.031258   -0.027422
2015-01-06   -0.029919 -0.035205  -0.020229   -0.025929  -0.028800   -0.020865
2015-01-07    0.004745  0.009270   0.014903    0.001526   0.014278    0.005951
2015-01-08    0.020661  0.015048   0.015965    0.022346   0.014889    0.022137

Однако, когда у меня есть Dataframe, где тип данных index - Datetime, то его ошибка;

Print(sales.loc[['2015-01-02','2015-01-08'], :])

KeyError: "None of [Index(['2015-01-02', '2015-01-08'], dtype='object', name='Date')] are in the [index]"

Не можем ли мы выберите определенные строки, используя индекс, если типом индекса является Datetime?

Пожалуйста, предложите.

1 Ответ

0 голосов
/ 17 апреля 2020

IIU C исправить ваш фильтр, добавив pd.to_datetime сделать тип такой же

df.loc[pd.to_datetime(['2015-01-02','2015-01-08']), :]
                Col1      Col2      Col3      Col4      Col5      Col6
2015-01-02  0.000559  0.002772  0.002992 -0.001438 -0.002320 -0.002189
2015-01-08  0.020661  0.015048  0.015965  0.022346  0.014889  0.022137
...