TypeError: '(slice(None, 59, None), slice(None, None, None))' is an invalid key

TypeError: '(slice(None, 59, None), slice(None, None, None))' is an invalid key

我有下面的 table 我想删除这些具有 NaN 值的行。

                   date    Open  ...  Real Lower Band  Real Upper Band
0   2020-07-08 08:05:00  2.1200  ...              NaN              NaN
1   2020-07-08 09:00:00  2.1400  ...              NaN              NaN
2   2020-07-08 09:30:00  2.1800  ...              NaN              NaN
3   2020-07-08 09:35:00  2.2000  ...              NaN              NaN
4   2020-07-08 09:40:00  2.1710  ...              NaN              NaN
5   2020-07-08 09:45:00  2.1550  ...              NaN              NaN

这些 NaN 值直到第 1 行。 58

为此,我写了下面的代码。但是出现了上面的错误。

data.drop(data[:59,:],inplace= True)
print(data)

请帮帮我!

有多种选择:

  1. 按索引标签删除行。

    df.drop(列表(范围(59)),轴=0,就地=真)

  2. 如果所选列中有 nans,则删除。

    df.dropna(轴=0, 子集=['Real Upper Band'], inplace=True)

  3. Select 行按索引标签保留 slice

    df = df.loc[59:, :] # 59是索引中的标签,如果索引是日期则将59替换为对应的日期时间

  4. Select 行以整数索引切片保留(类似于切片列表)

    df = df.iloc[59:, :] # 59是0索引行号,不管df

    上设置了什么索引
  5. 使用 .isna() 返回的 .loc 和布尔数组进行过滤

    df = df.loc[~df['Real Upper Band'].isna(), :]

请记住,loc 和 iloc 在应用于数据帧时使用二维,建议使用完整切片 : 以避免歧义并根据文档提高性能 https://pandas.pydata.org/docs/user_guide/indexing.html

您想保留第 59-th 行,因此您可以 运行 的最短代码是:

data = data[59:]