如何根据列实现标准删除行?

时间:2017-02-16 15:35:45

标签: python pandas

我有这个数据框:

COL_1    COL_2    COL_3    COL_4    NUM_1    NUM_2   NUM_3  NUM_4
NaN      AD       MD       TR       0        0       1      1
AD       TT       MD       TR       1        0       1      1
AD       TT       MD       NaN      0        0       1      0

我想在NUM_之后立即删除AD等于1的列索引。例如,第一行中的AD列索引等于2(COL_2)。因此,NUM_3NUM_2之后的下一个)等于1.这意味着应删除此行。

结果:

COL_1    COL_2    COL_3    COL_4    NUM_1    NUM_2   NUM_3  NUM_4
AD       TT       MD       TR       1        0       1      1
AD       TT       MD       NaN      0        0       1      0

1 个答案:

答案 0 :(得分:4)

假设COL*列的数量与NUM*列相同,您可以尝试以下向量化方法:

df[~((df.filter(like="COL") == "AD").values & 
     (df.filter(like="NUM") == 1).shift(-1, axis=1).fillna(False).values)
   .any(axis = 1)]

enter image description here