我有一个这样的数据框架:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns=list('abcd'))
df
      a         b         c         d
0  0.418762  0.042369  0.869203  0.972314
1  0.991058  0.510228  0.594784  0.534366
2  0.407472  0.259811  0.396664  0.894202
3  0.726168  0.139531  0.324932  0.906575

我如何得到除b之外的所有列?


当前回答

类似于@Toms的答案,也可以选择除“b”以外的所有列,而不使用.loc,如下所示:

df[df.columns[~df.columns.isin(['b'])]]

其他回答

这里有另一种方法:

df[[i for i in list(df.columns) if i != '<your column>']]

你只需要传递要显示的所有列,除了你不想要的列。

对@Salvador Dali的另一个轻微修改使列列表可以排除:

df[[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]

or

df.loc[:,[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]

类似于@Toms的答案,也可以选择除“b”以外的所有列,而不使用.loc,如下所示:

df[df.columns[~df.columns.isin(['b'])]]

当列不是MultiIndex时,df。Columns只是一个列名数组,所以你可以这样做:

df.loc[:, df.columns != 'b']

          a         c         d
0  0.561196  0.013768  0.772827
1  0.882641  0.615396  0.075381
2  0.368824  0.651378  0.397203
3  0.788730  0.568099  0.869127

我认为最好的方法是@萨尔瓦多·达利提到的方法。并不是说其他人都错了。

因为当你有一个数据集你只想选择一列,然后把它放到一个变量中,而把其他列放到另一个变量中,以进行比较或计算。那么删除数据集的列可能没有帮助。当然也有这样的用例。

x_cols = [x for x in data.columns if x != 'name of column to be excluded']

然后你可以把变量x_cols中的列集合放到另一个变量x_cols1中进行其他计算。

ex: x_cols1 = data[x_cols]