如何基于特定列中的NaN值在df中删除行,而不使用列名而是子集的整数位置?

问题描述

我有一个9列(长的隐秘列名)和约1000行的数据框。我只想删除/删除第2列和第3列中的值为NaN的行。

我知道有DataFrame.dropna(subset=[]),但是我不想按标签而是按位置选择列。

有办法吗?重命名列是没有选择的。

我的解决方案: df.dropna(subset=df.columns[[2,3]],how='all')


编辑: 这是我数据框的一些行:(重要的列是温度和事件)

              Datum Zeit   Zeitzone  \
Anz.                                  
926  2019-09-17 09:00:00  GMT+02:00   
927  2019-09-17 10:00:00  GMT+02:00   
928  2019-09-17 11:00:00  GMT+02:00   
929  2019-09-17 12:00:00  GMT+02:00   
930  2019-09-17 13:00:00  GMT+02:00   
931  2019-09-17 13:10:32  GMT+02:00   
932  2019-09-17 13:11:21  GMT+02:00   
933  2019-09-17 13:11:41  GMT+02:00   
934  2019-09-17 13:11:42  GMT+02:00   
935  2019-09-17 13:11:53  GMT+02:00   

      Temp.,°C (LGR S/N: 20009596,SEN S/N: 20009596,LBL: 1m)  \
Anz.                                                              
926                                              12.401           
927                                              13.942           
928                                              15.760           
929                                              15.569           
930                                              15.187           
931                                                 NaN           
932                                                 NaN           
933                                                 NaN           
934                                                 NaN           
935                                                 NaN           

      Event,units (LGR S/N: 20009596,LBL: 0,2 mm Niederschlag)  \
Anz.                                                                                  
926                                                 NaN                               
927                                                 NaN                               
928                                                 NaN                               
929                                                 NaN                               
930                                                 NaN                               
931                                               163.0                               
932                                                 NaN                               
933                                                 NaN                               
934                                                 NaN                               
935                                               163.0                               

     Notiz Koppler verbunden (LGR S/N: 20009596)  \
Anz.                                               
926                                          NaN   
927                                          NaN   
928                                          NaN   
929                                          NaN   
930                                          NaN   
931                                          NaN   
932                                Protokolliert   
933                                          NaN   
934                                Protokolliert   
935                                          NaN   

     Koppler abgetrennt (LGR S/N: 20009596)  \
Anz.                                          
926                                     NaN   
927                                     NaN   
928                                     NaN   
929                                     NaN   
930                                     NaN   
931                                     NaN   
932                                     NaN   
933                           Protokolliert   
934                                     NaN   
935                                     NaN   

     Host verbunden (LGR S/N: 20009596) Angehalten (LGR S/N: 20009596)  \
Anz.                                                                     
926                                 NaN                            NaN   
927                                 NaN                            NaN   
928                                 NaN                            NaN   
929                                 NaN                            NaN   
930                                 NaN                            NaN   
931                                 NaN                            NaN   
932                                 NaN                            NaN   
933                                 NaN                            NaN   
934                       Protokolliert                            NaN   
935                                 NaN                  Protokolliert   

     Dateiende (LGR S/N: 20009596)  
Anz.                                
926                            NaN  
927                            NaN  
928                            NaN  
929                            NaN  
930                            NaN  
931                            NaN  
932                            NaN  
933                            NaN  
934                            NaN  
935                  Protokolliert  

这就是我想要的样子(我离开了索引以使其更加可见):

              Datum Zeit   Zeitzone  \
Anz.                                  
926  2019-09-17 09:00:00  GMT+02:00   
927  2019-09-17 10:00:00  GMT+02:00   
928  2019-09-17 11:00:00  GMT+02:00   
929  2019-09-17 12:00:00  GMT+02:00   
930  2019-09-17 13:00:00  GMT+02:00   
931  2019-09-17 13:10:32  GMT+02:00   
935  2019-09-17 13:11:53  GMT+02:00   

      Temp.,LBL: 1m)  \
Anz.                                                              
926                                              12.401           
927                                              13.942           
928                                              15.760           
929                                              15.569           
930                                              15.187           
931                                                 NaN           
935                                                 NaN           

      Event,2 mm Niederschlag)  \
Anz.                                                                                  
926                                                 NaN                               
927                                                 NaN                               
928                                                 NaN                               
929                                                 NaN                               
930                                                 NaN                               
931                                               163.0                               
935                                               163.0                               

     Notiz Koppler verbunden (LGR S/N: 20009596)  \
Anz.                                               
926                                          NaN   
927                                          NaN   
928                                          NaN   
929                                          NaN   
930                                          NaN   
931                                          NaN   
935                                          NaN   

     Koppler abgetrennt (LGR S/N: 20009596)  \
Anz.                                          
926                                     NaN   
927                                     NaN   
928                                     NaN   
929                                     NaN   
930                                     NaN   
931                                     NaN   
935                                     NaN   

     Host verbunden (LGR S/N: 20009596) Angehalten (LGR S/N: 20009596)  \
Anz.                                                                     
926                                 NaN                            NaN   
927                                 NaN                            NaN   
928                                 NaN                            NaN   
929                                 NaN                            NaN   
930                                 NaN                            NaN   
931                                 NaN                            NaN   
935                                 NaN                  Protokolliert   

     Dateiende (LGR S/N: 20009596)  
Anz.                                
926                            NaN  
927                            NaN  
928                            NaN  
929                            NaN  
930                            NaN  
931                            NaN  
935                  Protokolliert  

解决方法

与其删除不需要的行,不如保留想要的行:

df[df.iloc[:,[2,3]].notnull().all(axis=1)]

但是按索引获取列名有什么问题呢?

df.dropna(subset=df.columns[[2,3]])