查找具有NaN值的DataFrame列表的索引 - Pandas

时间:2017-07-25 17:55:06

标签: python list pandas dataframe indexing

我有一个数据框列表,其中一些数据框的值为NaN。到目前为止,我可以使用此link标识单个数据框的NaN值。

如何找到数据框具有NaN值的列表索引。

dffs的示例列表,

[                   
 var1       var1  
14.171250  13.593813
13.578317  13.595329
10.301850  13.580139
9.930217   NaN
6.192517   13.561943
NaN        13.565149
6.197983   13.572509,  

  var1       var2    
2.456183  5.907528
5.052017  5.955731
5.960000  5.972480
8.039317  5.984608
7.559217  5.985348
6.933633  5.979438,

 var1       var1  
14.171250  23.593813
23.578317  23.595329
56.301850  23.580139
90.930217   22.365676
89.192517   33.561943
86.23654   53.565149
NaN        13.572509,  
...]

我需要将结果放在indexes 02的{​​{1}}值列表中。

到目前为止,我试过这个,

NaN

按照df_with_nan = [] for df in dffs: df_with_nan.append(df.columns[df.isnull().any()]) 循环,我得到了列名forvar1。但是,当我遍历它时,我需要那些数据帧的索引。任何帮助或建议都会很棒。

2 个答案:

答案 0 :(得分:2)

您可以使用条件列表推导来枚举列表中的所有数据帧,并返回包含任何空值的枚举索引值。

df_with_nan = [n for n, df in enumerate(dffs) if sum(df.isnull().any())]

答案 1 :(得分:1)

你几乎就在那里......只需使用enumerate循环索引,df.isnull().values.any()(比df.isnull().any().max()更快)来测试:

df_with_nan = []
for i, df in enumerate(dffs):
    if df.isnull().values.any():
        df_with_nan.append(i)

当然,列表组合更短,但可以选择任何你喜欢的方式。