代码之家  ›  专栏  ›  技术社区  ›  Bharat Sharma

dataframe条件筛选器长列表列

  •  3
  • Bharat Sharma  · 技术社区  · 8 年前
    >>> df
         c1    c2 P1
    0  10.0  20.0 1
    1   NaN  40.0 2
    2  50.0   NaN 3
    3   NaN   NaN 4
    4  60.0  70.0 5
    5   NaN   NaN 6
    >>>
    >>>
    >>> cols = ["c1" , "c2"]
    >>>
    >>> df[df[cols[0]].notnull() | df[cols[1]].notnull()]
         c1    c2 P1
    0  10.0  20.0 1
    1   NaN  40.0 2
    2  50.0   NaN 3
    4  60.0  70.0 5
    

    如上所示,我正在执行一个逻辑,希望保留至少有一个非Nan值的行。

    问题是列表中可能有多达100个或更多的列。那么,我该如何以pythonic的方式执行这个逻辑呢?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Mohamed Thasin ah    8 年前

    这应该是有效的:

    df.dropna(subset=cols, how='all', inplace = True)
    

    哪里 cols 是你的:

    cols = ["c1" , "c2"]
    
        2
  •  2
  •   Joe    8 年前

    试试这个,

    df=df.dropna(subset=[col],how='all')