【问题标题】:How to best handle datetime in lists or in Dataframes?如何最好地处理列表或数据框中的日期时间?
【发布时间】:2020-06-13 06:11:52
【问题描述】:

我正在尝试比较 datetime 或 dataFrame 列表,但它给了我一些错误,例如 th

AttributeError: 'DatetimeIndex' 对象没有属性 'between_time' 或 'loc'

Example Data: 
observed_time = ['2020-02-20T15:54:00Z', '2020-02-20T16:54:00Z']

slice_begin_time=['2020-02-20T17:50:00Z', '2020-02-20T18:50:00Z', '2020-02-20T19:50:00Z', '2020-02-20T20:50:00Z', '2020-02-20T21:50:00Z']
slice_end_time=['2020-02-20T18:05:00Z', '2020-02-20T19:05:00Z', '2020-02-20T20:05:00Z', '2020-02-20T21:05:00Z', '2020-02-20T22:05:00Z']

### LIBS
from datetime import datetime, timedelta
import pandas as pd

df=pd.to_datetime(check_time)
for i in range(len(slice_begin_time)):
    sdf = df.between_time(pd.Timestamp(slice_begin_time[i]),pd.Timestamp(slice_begin_time[i]))
    print(sdf)

我试过了

 #print(check_time.loc[(check_time > pd.to_datetime(slice_begin_time[i])) & (check_time < pd.to_datetime(slice_end_time[i]))])

找出问题所在,然后它给了我

AttributeError: 'DatetimeIndex' 对象没有属性 'loc'

【问题讨论】:

    标签: python pandas list time


    【解决方案1】:

    我认为问题是变量df 分配给DatetimeIndex,还有DataFrame.between_time 使用时间,而不是日期时间:

    df=pd.to_datetime(observed_time)
    

    您可以zip 两个列表并使用Series.between

    s = pd.Series(pd.to_datetime(observed_time))
    for start, end in zip(slice_begin_time, slice_end_time):
        sdf = s[s.between(pd.Timestamp(start),pd.Timestamp(end))]
        print(sdf)
    

    你的解决方案应该改变:

    s = pd.Series(pd.to_datetime(observed_time))
    for i in range(len(slice_begin_time)):
        sdf = s[s.between(pd.Timestamp(slice_begin_time[i]),pd.Timestamp(slice_end_time[i]))]
        print(sdf)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多