【问题标题】:How to check a date time column in a specific range in python panda?如何检查python panda中特定范围内的日期时间列?
【发布时间】:2019-09-23 15:15:01
【问题描述】:

我有一个包含日期列的文件。我想检查日期时间列是否在特定范围内。(例如,我每天得到 5 个文件(我无法控制),我需要在其中选择一个包含几乎在午夜阅读的文件。

该特定文件中的所有行都会延迟一分钟。(所有读数,因此不超过一分钟的间隔)

使用 panda ,我加载日期列如下;

def read_dipsfile(writer):
    atg_path = '/Users/ratha/PycharmProjects/DataLoader/data/dips'
    files = os.listdir(atg_path)
    df = pd.DataFrame()
    dateCol = ['Dip Time']
    for f in files:
        if(f.endswith('.CSV')):
            data = pd.read_csv(os.path.join(atg_path, f), delimiter=',', skiprows=[1], skipinitialspace=True,
                               parse_dates=dateCol)

            if mid_day_check(data['Dip Time']):  --< gives error
                df = df.append(data)


def mid_day_check(startTime):
    midnightTime = datetime.datetime.strptime(startTime, '%Y%m%d')
    hourbefore = datetime.datetime.strptime(startTime, '%Y%m%d') + datetime.timedelta(hours=-1)

    if startTime <= midnightTime and startTime>=hourbefore:
        return True
    else:
        return False

在上面的代码中,如何将列传递给我的函数? 目前我收到以下错误;

    midnightTime = datetime.datetime.strptime(startTime, '%Y%m%d')
TypeError: strptime() argument 1 must be str, not Series

如何使用 panda 日期列检查时间范围?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我认为你需要:

    def mid_day_check(startTime):
        #remove times
        midnightTime = startTime.dt.normalize()
        #add timedelta
        hourbefore = midnightTime + pd.Timedelta(hours=-1)
    
        #test with between and return at least one True by any
        return startTime.between(hourbefore, midnightTime).any()
    

    【讨论】:

      【解决方案2】:

      您似乎正试图在 strptime() 中传递 pd 系列,这是无效的。 您可以使用pd.to_datetime() 方法来实现。

      pd.to_datetime(data['Dip Time'], format='%b %d, %Y')
      

      查看这些链接以获得解释。

      1. strptime
      2. conversion from series

      【讨论】:

      • parse_dates=dateCol,不用再转换了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      相关资源
      最近更新 更多