如何选择除熊猫中的一列以外的所有列?

新手上路,请多包涵

我有一个看起来像这样的数据框:

 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 以外的所有列?

原文由 markov zain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 243
2 个回答

当列不是 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

原文由 Marius 发布,翻译遵循 CC BY-SA 4.0 许可协议

不要使用 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() also accepts a list of labels, eg df.drop(['a', 'b'], axis=1) will drop column a and b .

原文由 mike 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题