Python-Dataframe包含需要在另一个数据帧中删除的列名

Python-Dataframe包含需要在另一个数据帧中删除的列名,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧: 第一个数据帧只是一列,其中每行是第二个数据帧中的一个列名。此数据帧仅包含所有列的子集 我要做的是删除第二个数据帧中较小数据帧中引用的列。我已经编写了一个循环来实现这一点,但我想知道是否有更有效的方法来实现这一点,因为我需要删除大约5000列 以下是我完成此任务的代码: for i in to_remove['column_name']: df = df.drop(i, axis=1) 谢谢 我可能误解了您要找的内容,但以下几点应该有用: df_new = df.dro

我有两个数据帧:

第一个数据帧只是一列,其中每行是第二个数据帧中的一个列名。此数据帧仅包含所有列的子集

我要做的是删除第二个数据帧中较小数据帧中引用的列。我已经编写了一个循环来实现这一点,但我想知道是否有更有效的方法来实现这一点,因为我需要删除大约5000列

以下是我完成此任务的代码:

for i in to_remove['column_name']:
    df = df.drop(i, axis=1)

谢谢

我可能误解了您要找的内容,但以下几点应该有用:

df_new = df.drop(columns=to_remove['column_name'])

看看这个例子:

df = pd.DataFrame({'cols': ['col1', 'col2']})
df2 = pd.DataFrame({'col1': ['a', 'b'], 
                    'col2': ['a', 'b'], 
                    'col3': ['a', 'b'], 
                    'col4': ['a', 'b']})
以致

>>> df
    cols
0   col1
1   col2

>>> df2
    col1    col2    col3    col4
0   a       a       a       a
1   b       b       b       b
选项1:
isin
+
~
您可以使用isin+一元运算符
~

df2.loc[:, ~df2.columns.isin(df.cols)]

    col3    col4
0   a       a
1   b       b
选项2:
drop
+
axis=1
这些命令返回一个新的
df
。因此,不要忘记将结果分配回变量(例如,df2=df2.drop(df.cols,axis=1))

这应该可以做到:

df.drop(to_remove.column_name, axis=1, inplace=True)
df.drop(to_remove.column_name, axis=1, inplace=True)