首页 > 解决方案 > Pandas formated Datetime Column - Filter results by a specific Day of Week

问题描述

I only want results where day equals Thursday. I'm able to filter the open sites and ff which is first come first server but not sure how to filter by a specific day from my formated date. Thank you

def main():
    result = []
    print('Checking for available  campsites....')

    for unit_id in list(range(5095, 5096)) + [5117] + [5056] + [5078] + [5111] + [5113] + [5115] + [5119]:
        resp = requests.get(
            f"https://calirdr.usedirect.com/rdr/rdr/fd/"
            f"availability/getbyunit/{unit_id}/startdate/{day_today}/nights/60/true?").json()
        result.extend(resp)

    df = pd.DataFrame(result)
    df.rename(columns={'UnitId': 'Site', 'StartTime': 'Date', 'IsFree': 'Open', 'IsWalkin': 'FF'}, inplace=True)
    filter_by = ['Site', 'Date', 'Open', 'FF']
    df = df.filter(items=filter_by)
    df['Date'] = df['Date'].apply(lambda d: datetime.fromisoformat(d).strftime("%m-%d-%y %A "))
    # I only want results where day equals Thursday
    df = df[df['Open']]
    df = df[~df['FF']]
    print(df)

PRINTED RESULT

    Site                 Date  Open     FF
    5095   09-23-21 Thursday   True  False
    5095    10-19-21 Tuesday   True  False
    5095  10-20-21 Wednesday   True  False
    5095   10-21-21 Thursday   True  False

标签: python-3.xpandasdataframe

解决方案


Or why not just:

df = df[df['Date'].dt.dayofweek == 3]

推荐阅读