Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何消除除一个特定变量/列之外的所有具有特定列名的列?_Python_Pandas_Drop - Fatal编程技术网

Python 如何消除除一个特定变量/列之外的所有具有特定列名的列?

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

我使用以下代码消除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 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”被故意作为“短路”
的第一个条件>或
操作员。