问题:如何选择除熊猫中的一列以外的所有列?
我有一个数据框看起来像这样:
import pandas
import numpy as np
df = 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我如何才能获得除以外的所有列column b?
回答 0
当列不是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回答 1
不要使用ix。它弃用。最可读和惯用的方法是df.drop():
>>> df
          a         b         c         d
0  0.175127  0.191051  0.382122  0.869242
1  0.414376  0.300502  0.554819  0.497524
2  0.142878  0.406830  0.314240  0.093132
3  0.337368  0.851783  0.933441  0.949598
>>> df.drop('b', axis=1)
          a         c         d
0  0.175127  0.382122  0.869242
1  0.414376  0.554819  0.497524
2  0.142878  0.314240  0.093132
3  0.337368  0.933441  0.949598请注意,默认情况下,.drop()它不会就地运行;尽管名称不祥,但df不受此过程的影响。如果你想永久删除b的df,做的df.drop('b', inplace=True)。
df.drop()还接受标签列表,例如df.drop(['a', 'b'], axis=1)将drop column a和b。
回答 2
df[df.columns.difference(['b'])]
Out: 
          a         c         d
0  0.427809  0.459807  0.333869
1  0.678031  0.668346  0.645951
2  0.996573  0.673730  0.314911
3  0.786942  0.719665  0.330833回答 3
您可以使用 df.columns.isin()
df.loc[:, ~df.columns.isin(['b'])]当您要删除多列时,简单如下:
df.loc[:, ~df.columns.isin(['col1', 'col2'])]回答 4
这是另一种方式:
df[[i for i in list(df.columns) if i != '<your column>']]您只需要传递所有要显示的列即可,不需要的列除外。
回答 5
对@Salvador Dali的另一项轻微修改使列列表可以排除:
df[[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]要么
df.loc[:,[i for i in list(df.columns) if i not in [list_of_columns_to_exclude]]]回答 6
我认为最好的方法是@Salvador Dali提到的方法。并不是说其他人是错的。
因为当您拥有一个数据集时,您只想选择一列并将其放入一个变量中,而将其余列放入另一变量中以进行比较或计算。然后删除数据集的列可能无济于事。当然,也有一些用例。
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]回答 7
这是一行lambda:
df[map(lambda x :x not in ['b'], list(df.columns))]之前:
import pandas
import numpy as np
df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))
df
       a           b           c           d
0   0.774951    0.079351    0.118437    0.735799
1   0.615547    0.203062    0.437672    0.912781
2   0.804140    0.708514    0.156943    0.104416
3   0.226051    0.641862    0.739839    0.434230之后:
df[map(lambda x :x not in ['b'], list(df.columns))]
        a          c          d
0   0.774951    0.118437    0.735799
1   0.615547    0.437672    0.912781
2   0.804140    0.156943    0.104416
3   0.226051    0.739839    0.434230
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

