考虑到我有一个pandas数据帧作为以下示例(在真实数据集中有更多的行/列):
| 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
你知道什么是错的吗?或者我希望获得结果的另一种方式?
提前致谢。
答案 0 :(得分:1)
您应该使用all
df2[df2[['val2','val3','val4']].isnull().all(1)]
Out[544]:
t1 val2 val3 val4
0 1 NaN NaN NaN