Search code examples
pythonpandasdataframedatekeyerror

Drop Dates greater a given date (keyerror)


I have a CSV file of following form:

Date Data 1 Data 2 ... Data n
2010-01-02 123 222 ... 223
2010-01-03 124 232 ... 233
... ... ... ... ...
2021-11-06 424 332 ... 133

I want to read all lines of this table into a Pandas dataframe where the column date is less than a given date, say 2010-01-05.

I just tried the following code:

df = pd.read_csv('test.csv')
df["Date"] = pd.to_datetime(daten["Date"], format="%Y-%m-%d")
df.drop(df["Date"] >= "2010-01-05", axis=0, inplace=True)
daten.set_index("Date", axis=0, inplace=True)

This gives me a key error

KeyError: '[ True True False ... False False False] not found in axis'

What is the right way to solve this problem?


Solution

  • drop method need an Index or column labels to drop not the rows themselves.

    You can choose to keep rows that match condition:

    df = pd.read_csv('test.csv', parse_dates=['Date'])
    df = df[df['Date'] < "2010-01-05"]
    

    Output:

    >>> df
            Date  Data 1  Data 2  Data n
    0 2010-01-02     123     222     223
    1 2010-01-03     124     232     233
    

    Or if you prefer use drop like this:

    df = pd.read_csv('test.csv', parse_dates='Date')
    df.drop(df[df["Date"] >= "2010-01-05"].index, inplace=True)