Pandas:根据从几个子列计算的条件,从pandas数据框中选择行

时间:2015-12-16 12:23:06

标签: python pandas dataframe

我有一个Pandas DataFrame对象data。有一些名为'a', 'b', 'c', ..., 'z'

的列

我想选择符合以下条件的所有行:列'b''c''g'中的数据不同时为NaN。我尝试过以下方法:

import numpy as np

COLUMN_NAMES = ['b', 'c', 'g']
new_data = data[not all(np.isnan(value) for value in data[COLUMN_NAMES])]

但它不起作用 - 抛出错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>`
  File "<input>", line 1, in <genexpr>
 TypeError: Not implemented for this type

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

我想选择符合以下条件的所有行:列中的数据&#39; b&#39;,&#39; c&#39;,&#39; g&#39;同时不是NaN。

然后您可以使用new_data = data.dropna(how='all', subset=['b', 'c', 'g'])

how : {'any', 'all'}
    * any : if any NA values are present, drop that label
    * all : if all values are NA, drop that label
subset : array-like
    Labels along other axis to consider, e.g. if you are dropping rows
    these would be a list of columns to include

使用parameters

{{1}}