Python-Dataframe包含需要在另一个数据帧中删除的列名
我有两个数据帧: 第一个数据帧只是一列,其中每行是第二个数据帧中的一个列名。此数据帧仅包含所有列的子集 我要做的是删除第二个数据帧中较小数据帧中引用的列。我已经编写了一个循环来实现这一点,但我想知道是否有更有效的方法来实现这一点,因为我需要删除大约5000列 以下是我完成此任务的代码: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
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)