首页 > 解决方案 > 使用熊猫从未命名或空白的列中删除行

问题描述

我有一个数据框 df,我想使用 pandas 从未命名或空白的列中删除一行。我想删除包含“id”的行

数据

        a   b   c
date    21  22  23
id          
aa      2   3   4
bb      1   2   3
cc      5   5   5

期望的

        a   b   c
date    21  22  23
aa      2   3   4
bb      1   2   3
cc      5   5   5

正在做

df[df[""].str.contains("id")==False]

或者

df.drop(1)

但是,该操作没有执行,我没有得到想要的结果。我正在积极研究这个。任何建议表示赞赏

标签: pythonpandasnumpy

解决方案


使用dropna

>>> df.dropna(how='all', axis=0)
         a     b     c
date  21.0  22.0  23.0
aa     2.0   3.0   4.0
bb     1.0   2.0   3.0
cc     5.0   5.0   5.0

更新

如果第一列不是索引而是具有空名称的真实列,也许你应该使用这个版本:

>>> df[df.loc[:, df.columns.str.len().astype(bool)].notna().any(axis=1)]

            a     b     c
0  date  21.0  22.0  23.0
2    aa   2.0   3.0   4.0
3    bb   1.0   2.0   3.0
4    cc   5.0   5.0   5.0

或者更简单,如果您的未命名列是第一个:

>>> df[df.iloc[:, 1:].notna().any(axis=1)]
            a     b     c
0  date  21.0  22.0  23.0
2    aa   2.0   3.0   4.0
3    bb   1.0   2.0   3.0
4    cc   5.0   5.0   5.0

推荐阅读