我有两个数据框:

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

我想做的是删除第二个数据框中较小的列中引用的列。我已经编写了一个执行此操作的循环,但是我想知道是否有更有效的方法,因为我需要删除大约5,000列。

这是完成此任务的代码:

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


谢谢!

最佳答案

看一下这个例子:

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

df2.drop(df.cols, axis=1) # same as df2.drop(columns=df.cols)

    col3    col4
0   a       a
1   b       b


这些命令返回一个新的df。因此,不要忘记将结果分配回变量(例如df2 = df2.drop(df.cols, axis=1)

关于python - Python-数据框包含需要删除的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51642699/

10-12 04:19
查看更多