我正在尝试从pandas变量中删除行。
为此,我创建了一个函数来分析我的熊猫表中的2列。当此函数识别出一个单元格为空时,该函数应删除该行。
我尝试了以下代码:
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
... ... ... ... ... ...
将变量放入函数后,我得到的表完全相同[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
... ... ... ... ... ...
我期望这样的结果:[?????行x 11列]:
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
... ... ... ... ... ...
有人可以帮助我识别我的错误吗?
答案 0 :(得分:1)
如果我正确理解,当两个特定列中至少有一个为“无/空”时,您想删除行。
在熊猫中很简单,有一种叫做dropna的方法
df.dropna(subset=["Signal", "results"], inplace=True)
此处的子集是您要考虑的列。
答案 1 :(得分:1)
完成所需目标的最简单方法是:
df.drop(df[df.Signal.isnull() | df.results.isnull()].index, inplace=True)
答案 2 :(得分:0)
简单方法:
df.dropna(subset = ['Signal','results'],axis = 0)