Python 如何删除具有特定条件的熊猫中的行
我正在尝试从pandas变量中删除行 为此,我创建了一个函数,用于分析pandas表中的两列。当此函数识别某个单元格为空时,该函数应删除该行 我尝试了以下代码: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
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时删除行
在熊猫身上,这很简单,有一种方法叫做dropnadf.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以外的其他条件,那么这种方法可能更好。