我有两个数据框:
第一个数据帧只是一个列,其中每一行都是第二个数据帧中的列名。该数据框仅包含所有列的子集。
我想做的是删除第二个数据框中较小的列中引用的列。我已经编写了一个执行此操作的循环,但是我想知道是否有更有效的方法,因为我需要删除大约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/