rapidsai/cudf

[FEA] Series and DataFrame between_time

Open

#9.634 aberto em 8 de nov. de 2021

Ver no GitHub
 (1 comment) (0 reactions) (0 assignees)C++ (735 forks)batch import
Pythonfeature requestgood first issue

Métricas do repositório

Stars
 (6.000 stars)
Métricas de merge de PR
 (Mesclagem média 17d 21h) (230 fundiu PRs em 30d)

Description

For pandas API compatibility, we can implement Series and DataFrame.between_time. between_time "select[s] values between particular times of the day (e.g., 9:00-9:30 AM). By setting start_time to be later than end_time, you can get the times that are not between the two times."

If the index is not a DatetimeIndex, this method throws a TypeError. DateTimes without time components are considered as if the time component were "0:00:00". Valid {start, end}_time must be in the interval [0:00 and 24:00).

The API documentation does not indicate what resolutions are valid or invalid for {start, end}_time, but it is documented as only including granularity down to seconds in the utility function:

        Return index locations of values between particular times of day
        (e.g., 9:00-9:30AM).
        Parameters
        ----------
        start_time, end_time : datetime.time, str
            Time passed either as object (datetime.time) or as string in
            appropriate format ("%H:%M", "%H%M", "%I:%M%p", "%I%M%p",
            "%H:%M:%S", "%H%M%S", "%I:%M:%S%p","%I%M%S%p").
        include_start : bool, default True
        include_end : bool, default True
import pandas as pd
​
i = pd.date_range('2018-04-09', periods=4, freq='1D20min')
ts = pd.DataFrame({'A': [1, 2, 3, 4]}, index=i)
​
print(ts)
print(ts.between_time('0:15', '0:45'))
print(ts.between_time('0:45', '0:15'))
                     A
2018-04-09 00:00:00  1
2018-04-10 00:20:00  2
2018-04-11 00:40:00  3
2018-04-12 01:00:00  4
                     A
2018-04-10 00:20:00  2
2018-04-11 00:40:00  3
                     A
2018-04-09 00:00:00  1
2018-04-12 01:00:00  4
i = pd.Series(["2021-01-01", "2021-02-10"], dtype="datetime64[ns]")
s = pd.Series([0,1], index=i)
print(s, "\n")
print(s.between_time("0:00:01", "23:59:59"), "\n")
print(s.between_time("0:00", "0:15"))
2021-01-01    0
2021-02-10    1
dtype: int64 

Series([], dtype: int64) 

2021-01-01    0
2021-02-10    1
dtype: int64

Guia do colaborador