我想要删除数据帧中不具有值'X1‘和'1’的所有行。下面是输入和输出的示例,其中包含以下数据帧:
这是我制作的数据框架:
d = {1: [0,0,0, 1,0], 2: [0,0,0, 1,0], 3:[0,0,0,1,0], 4:[0,0,1,1,0], 5:[0,0,1,'X1',0],
6:[1,0,1,'X1',0],7:[1,0,1,'X1',0],8:[1,0,1,'X1',0],9:[1,0,'X1',0,pd.NaT]}
d = pd.DataFrame(data=d,index=range(1,6))
d
1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 1 1 1 1
2 0 0 0 0 0 0 0 0 0
3 0 0 0 1 1 1 1 1 X1
4 1 1 1 1 X1 X1 X1 X1 0
5 0 0 0 0 0 0 0 0 NaT
这是我写的代码:
for column in d.columns:
index_names = d[(d[column] == 1) | (d[column]== 'X1')]
index_names
1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 1 1 1 1
3 0 0 0 1 1 1 1 1 X1
它的效果不是很好!它只考虑最后一列,而不删除第四行。有人知道我哪里错了吗?
发布于 2021-07-28 14:46:45
您可以尝试通过布尔掩码:
#your condition:
m=(d.eq(1).any(1)) | (d.eq('X1').any(1))
#Finally:
d=d[m]
#OR
d=d.loc[m]
d
的输出
1 2 3 4 5 6 7 8 9
1 0 0 0 0 0 1 1 1 1
3 0 0 0 1 1 1 1 1 X1
4 1 1 1 1 X1 X1 X1 X1 0
https://stackoverflow.com/questions/68555589
复制相似问题