删除日期大于给定日期(keyerror)

Drop Dates greater a given date (keyerror)

我有一个 CSV 文件,格式如下:

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

我想将此 table 的所有行读入 Pandas 数据框,其中列日期小于给定日期,例如 2010-01-05。

我刚刚尝试了以下代码:

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)

这给了我一个关键错误

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

解决这个问题的正确方法是什么?

drop 方法需要 索引或列标签来删除 而不是行本身。

您可以选择保留符合条件的行:

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

输出:

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

或者如果您喜欢这样使用 drop

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