Skip to content
Advertisement

Dataframe conditions syntax

I have a mystery error on line 13 of this program. I’m trying to select all the times between 22.00 and 23.00. I’ve tried with and without datetime, with and without apostrophes, but I get the same error every time: “SyntaxError: invalid syntax”

The csv file is 8 columns and ‘complaint_time’ is in the format 12:22:01 AM.

What am I missing…?

Thanks :)

\

## Imports 

import pandas as pd
from datetime import datetime, timedelta
df = pd.read_csv("nyc_noise_complaints.csv")
df['complaint_time'] = pd.to_datetime(df['complaint_time'], format="%H:%M.%S")

##Define a dictionary
Dict2 = {'BRONX': None, 'BROOKLYN': None, 'QUEENS': None, 'MANHATTAN': None, 'STATEN ISLAND': None}

##Define a function

def function2(arg):

    late = df.loc[(df['borough']==arg) & (df['complaint_time']<= 23:00.0.to_datetime() & >=22:00.0.to_datetime())]
    number = late.count()[0]

## Update the dictionary

    Dict2 [arg]=number

## Loop through the list and run the function

for key in Dict2:
    function2(key)

smallest2 = min(Dict2, key=Dict2.get)
print("Smallest number of complaints between 2200 & 2300: "+str(smallest2)+' '+str(Dict2[smallest2]))

///

Advertisement

Answer

try this:

late = df.loc[(df['borough']==arg) & ((df['complaint_time'].dt.hour<= 23) & (df['complaint_time'].dt.hour >=22))]

#or

late=df[(df['borough']==arg) & ((df['complaint_time'].dt.hour <= 23) & (df['complaint_time'].dt.hour >=22))]

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement