简体   繁体   中英

Calculations with datetime index of Pandas dataframe

I have a Pandas dataframe. The index of the dataframe is a datetime column namely "time". How is it possible to call certain information like min() or max values of this index datetime column? or how do I do a timedelta calculation?

The dataframe example:

                      Temperature   Humidity        Height
 time                                                                       
 2022-03-17 12:52:27   281.278408  74.551713    602.406738  
 2022-03-17 12:52:28   281.278408  74.551713    602.406738  
 2022-03-17 12:52:29   281.278408  74.551713    602.406738  
 2022-03-17 12:52:30   281.278408  74.551713    602.406738  
 2022-03-17 12:52:31   281.278408  74.551713    602.406738  
 ...                          ...        ...           ...  
 2022-03-17 14:28:07   220.382478   0.929040  26529.819649  
 2022-03-17 14:28:08   220.355416   0.933099  26534.843300  
 2022-03-17 14:28:09   220.327658   0.937137  26539.820942   
 2022-03-17 14:28:10   220.300062   0.941082  26544.776129   
 2022-03-17 14:28:11   220.272778   0.944972  26549.735739 

What I principally aim at (just for illustration):

starttime = str(timedelta(seconds=int(df.time.min()))) +" UTC")
endtime = str(timedelta(seconds=int(df.time.max()))) +" UTC")
duration = endtime - starttime

Resulting (of course) in a AttributeError: 'DataFrame' object has no attribute 'time'.

And using

starttime = str(timedelta(seconds=int(df.index.min()))) +" UTC")

results in a TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

Any hint for me?

Thanks.

Use:

duration = (pd.Timedelta(str(df_1hz.index.time.max()))-
            pd.Timedelta(str(df_1hz.index.time.min())))
print (duration)
0 days 01:35:44

If there is same datetimes:

def f(x):
    ts = x.total_seconds()
    hours, remainder = divmod(ts, 3600)
    minutes, seconds = divmod(remainder, 60)
    return ('{:02d}:{:02d}:{:02d} UTC').format(int(hours), int(minutes), int(seconds))

duration = f(df_1hz.index.max() - df_1hz.index.min())
print (duration)
01:35:44 UTC

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM