如何在指定行后删除缺失值的pandas数据框列

-2 投票
1 回答
35 浏览
提问于 2025-04-14 15:37

我有一个数据表,里面有几百列。我想要在第 n 行之后,如果某一列有缺失值,就把这一列删掉。请问我该怎么做?谢谢!

1 个回答

3

如果你的索引是从0开始的,并且是连续的,你可以检查每一列在第 n 行之后是否有 na 值,如果有的话就把它们删掉:

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()]
)

撰写回答