代码之家  ›  专栏  ›  技术社区  ›  te time

如果指定行后缺少值,如何从pandas数据帧中删除列

  •  0
  • te time  · 技术社区  · 2 年前

    我有一个包含数百列的数据帧,如果一列在行后包含任何丢失的值,我想删除它 n 。这是怎么做到的?谢谢

    1 回复  |  直到 2 年前
        1
  •  2
  •   Nick SamSmith1986    2 年前

    如果你的索引是基于0的并且连续的,你可以只检查任何 na 行后的值 n 在每列中,如果是,则删除它们:

    out = df.drop(
        columns = [c for c in df.columns if df.loc[n:, c].isna().any()]
    )
    

    如果索引不是基于0的,或者不是连续的,则可以使用 iloc 相反,但需要获取列编号而不是名称进行测试:

    out = df.drop(
        columns = [c for i, c in enumerate(df.columns) if df.iloc[n:, i].isna().any()]
    )
    

    注意,我假设您缺少的值是 NaN ,例如 '' (空字符串),可以执行以下操作:

    out = df.drop(
        columns = [c for c in df.columns if (df.loc[n:, c].astype(str) == '').any()]
    )