dataframe条件过滤器长列表列

时间:2018-05-30 10:54:36

标签: python pandas

>>> 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 个答案:

答案 0 :(得分:2)

这应该有效:

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

cols是你的地方:

cols = ["c1" , "c2"]

答案 1 :(得分:1)

试试这个,

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