繁体   English   中英

Pandas DataFrame索引,选择具有特定列(即NaN值)的行

[英]Pandas DataFrame indexing, Selecting rows with specific columns that are NaN values

考虑到我有一个熊猫数据框作为以下示例(实际数据集中有更多行/列):

   | t1 | val1 | val2 | val3 | val4
------------------------------------
  0| 1  | 1    | NaN  | NaN  | NaN
  1| 2  | 12   |  5   | NaN  | 4
  2| 3  | 104  |  6   | NaN  | NaN
  3| 4  | -1   |  7   | 6    | NaN
  4| 1  | -3   |  8   | 7    | 10

我只想提取其中t1 == 1且val2,val3和val4是NaN值的行,并且仅提取某些列。

例如,在上面的数据框中,我只想获得第一行。

到目前为止,我已经尝试了以下内容以及其中的一些变体:

我为我感兴趣的列定义了标签列表:

labels = [ 't1', 'val2', 'val3', 'val4']

然后,我运行以下代码以获取t1 == 1的所有值以及仅指定的列。

df2 = df.loc[df.t1 == 1, labels]

之后,我尝试仅同时获取val2,val3和val4为NaN的行。 我已经编写了以下代码,但它似乎不起作用:

df3 = df2.loc[df2[labels].isnull() == True, labels]

但它返回以下错误:

ValueError: Cannot index with multidimensional key

你知道出什么事了吗 还是获得我想要的结果的另一种方式?

提前致谢。

你应该all使用

df2[df2[['val2','val3','val4']].isnull().all(1)]
Out[544]: 
   t1  val2  val3  val4
0   1   NaN   NaN   NaN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM