Python 如何删除具有特定条件的熊猫中的行

Python 如何删除具有特定条件的熊猫中的行,python,pandas,numpy,Python,Pandas,Numpy,我正在尝试从pandas变量中删除行 为此,我创建了一个函数,用于分析pandas表中的两列。当此函数识别某个单元格为空时,该函数应删除该行 我尝试了以下代码: def removeNaN(df): row,colum=df.shape for index in range(0,row): if df.Signal.iloc[index]==np.NaN or df.results.iloc[index]==np.NaN: df.d

我正在尝试从pandas变量中删除行

为此,我创建了一个函数,用于分析pandas表中的两列。当此函数识别某个单元格为空时,该函数应删除该行

我尝试了以下代码:

def removeNaN(df):

    row,colum=df.shape

    for index in range(0,row):

        if df.Signal.iloc[index]==np.NaN or df.results.iloc[index]==np.NaN:

            df.drop(df.index[index],inplace=True)



    return df 
我的原始文件的维度是[37057行x 11列]:

      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
将变量放入函数后,我得到了完全相同的表[37057行x 11列]:

      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
我希望得到这样的结果:[?????行x 11列]:

      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
0               0  03.12.18 17:31    ...           NaN       NaN
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...
      Unnamed: 0      created_at    ...           Signal   results
1               1  03.12.18 17:32    ...      0.000000 -0.004039
2               2  03.12.18 17:33    ...      0.000000 -0.003910
3               3  03.12.18 17:34    ...      0.000000 -0.003297
...           ...      ...           ...         ...       ...

有人能帮我找出我的错误吗?

如果我理解正确,您希望在两个特定列中至少有一个为None/Null时删除行

在熊猫身上,这很简单,有一种方法叫做dropna

df.dropna(子集=[“信号”,“结果”],就地=真)


这里的子集是要考虑的列。 如果我理解正确,您希望在两个特定列中至少有一个为None/Null时删除行

在熊猫身上,这很简单,有一种方法叫做dropna

df.dropna(子集=[“信号”,“结果”],就地=真)


这里的子集是要考虑的列。 实现您想要的最简单的方法是:

df.drop(df[df.Signal.isnull()| df.results.isnull()].index,inplace=True)

实现您想要的最简单的方法是:

df.drop(df[df.Signal.isnull()| df.results.isnull()].index,inplace=True)

简单易行的方法:

dropna(子集=['Signal','results',],轴=0)


简单易行的方法:

dropna(子集=['Signal','results',],轴=0)


实际上,对于这种情况,我认为@mfcabrera的答案更合适。如果您想检查除isnull以外的其他条件,那么这种方法可能更好。实际上,对于这种情况,我认为@mfcabrera的答案更合适。如果您想检查除isnull以外的其他条件,那么这种方法可能更好。