如何select除pandas中的一列以外的所有列?
我有一个像这样的数据框:
import pandas import numpy as np df = DataFrame(np.random.rand(4,4), columns = list('abcd')) df abcd 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
之外的所有列?
当你没有MultiIndex时, df.columns
只是一个列名的数组,所以你可以这样做:
df.loc[:, df.columns != 'b'] acd 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
不要使用ix
。 这是不赞成的 。 这样做的最可读和惯用的方法是df.drop()
:
>>> df abcd 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) acd 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()
不在.drop()
操作; 尽pipe名字不祥, df
也没有受到这个过程的伤害。 如果你想从df
永久删除b
,则执行df.drop('b', inplace=True)
。
df.drop()
也接受一个标签列表,例如df.drop(['a', 'b'], axis=1)
将会删除列a
和b
。
df[df.columns.difference(['b'])] Out: acd 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
这是另一种方式:
df[[i for i in list(df.columns) if i != '<your column>']]
你只要通过所有的列显示除了你不想要的。