python - 如何根据列相关标准删除行?

标签 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

我想删除 AD 之后列索引的 NUM_ 等于 1 的那些行。例如,第一行中 AD 的列索引等于 2 (COL_2)。因此,NUM_3(NUM_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

最佳答案

假设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

关于python - 如何根据列相关标准删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278306/

相关文章:

python - 树莓派 : Auto run GUI on boot

python - Django 在数据库中保存带有额外字符的表单字符串 (u'string')

python - 检查系列是否包含列表中的任何元素

python - 多索引 - 获取每个第一个索引的第二个索引的最大值

python - 验证一列中的条件规则和另一列中的重复

python - 时间戳数组的年份与今天的差异

python - Pywin32 --> COM -->Powerpoint 教程?

python - 如何忽略以 UTF-8 编码的 Unicode 空白字符?

python - 将 os.popen(command) 读入字符串

python - 多索引 Pandas Dataframe 划分