【问题标题】:Drop Dates greater a given date (keyerror)删除日期大于给定日期(keyerror)
【发布时间】:2021-11-06 12:43:22
【问题描述】:

我有一个格式如下的 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

我想将此表的所有行读入 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] 未在 轴'

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

【问题讨论】:

    标签: python pandas dataframe date keyerror


    【解决方案1】:

    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)
    

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多