Python 如何消除除一个特定变量/列之外的所有具有特定列名的列?
我使用以下代码消除df中在其各自的colname中包含“OBJ”的所有列:Python 如何消除除一个特定变量/列之外的所有具有特定列名的列?,python,pandas,drop,Python,Pandas,Drop,我使用以下代码消除df中在其各自的colname中包含“OBJ”的所有列: d = pd.read_csv(url) df = d[d.columns.drop(list(d.filter(regex='OBJ')))] 我确实想消除colnames中包含字符“OBJ”的所有变量,但一个名为“REV_OBJ”的特定变量除外 是否有一种方法可以消除除“REV_OBJ”之外的所有“OBJ”?(个人偏好)这更具可读性: cols = [col for col in df.columns if no
d = pd.read_csv(url)
df = d[d.columns.drop(list(d.filter(regex='OBJ')))]
我确实想消除colnames中包含字符“OBJ”的所有变量,但一个名为“REV_OBJ”的特定变量除外
是否有一种方法可以消除除“REV_OBJ”之外的所有“OBJ”?(个人偏好)这更具可读性:
cols = [col for col in df.columns if not 'OBJ' in col or col=='REV_OBJ']
您可以使用列表理解来进行相同的操作,并且可以有一个包含要删除的所有元素的集合
to_remove = set([col for col in df.columns if "obj" in col.lower()]) - {'REV_OBJ'}
df.drop(to_remove, axis = 1, inplace = True)
未测试,但请尝试:
df.loc[:,~df.columns.str.contains(“OBJ”)].join(df[“REV_OBJ”]])
或df.filter(regex=r'(?!REV_OBJ\b)\b\w+,axis='columns')
如果您从未打算使用它们,也可以选择不将它们加载到数据帧中:df=pd.read(url,usecols=lambda c:c=='REV_OBJ'或'OBJ'不在c中)
…如果有小写字母“obj”的列名,它们将被错误地删除!纪伟,我认为这不是什么大问题,可以简单地处理。但是上面的陈述给出了解决问题的要点。次要说明:col中的条件不是“obj”被故意作为“短路”的第一个条件>或
操作员。