Home > Blockchain >  discarding all elements of datetimeindex except first and last
discarding all elements of datetimeindex except first and last

Time:04-24

I have the following datetimeindex:

dates = DatetimeIndex(['2022-03-01', '2022-03-02', '2022-03-03', '2022-03-04',
               '2022-03-05', '2022-03-06', '2022-03-07', '2022-03-08',
               '2022-03-09', '2022-03-10',
               ...
               '2022-06-06', '2022-06-07', '2022-06-08', '2022-06-09',
               '2022-06-10', '2022-06-11', '2022-06-12', '2022-06-13',
               '2022-06-14', '2022-06-15'],
              dtype='datetime64[ns]', length=107, freq='D')

I want to discard all elements except the first and last one. How do I do that? I tried this:

[dates[0]] dates[-1]] but it returns an actual list of datetimes and not this:

DatetimeIndex(['2022-03-01', '2022-06-15'],
                  dtype='datetime64[ns]', length=2, freq='D')

CodePudding user response:

Index with a list to select multiple items.

>>> dates[[0, -1]]
DatetimeIndex(['2022-03-01', '2022-06-15'], dtype='datetime64[ns]', freq=None)

This is covered in the NumPy user guide under Integer array indexing. In the Pandas user guide, there's related info under Selection by position.

CodePudding user response:

Here's a way to do it:

print(dates[::len(dates)-1])

Output:

DatetimeIndex(['2022-03-01', '2022-06-15'], dtype='datetime64[ns]', freq=None)

This is slicing using a step that skips right from the start to the end (explanation suggested by @wjandrea).

  • Related