选择除了Pandas数据框架中的一个给定列之外的所有列

  • Post category:Python

现在给出一种选择除给定列以外所有列的方式:

需要使用 Pandas DataFrame 中 column 的方法与 Pandas DataFrame 中 Index 本身的一些属性来实现。

有如下数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(5, 5), columns=['a', 'b', 'c', 'd', 'e'])
print(df)

输出如下:

          a         b         c         d         e
0 -1.173622 -0.485457 -0.425674  2.238513 -0.638321
1 -1.826240 -0.944943 -0.252497 -0.550941  0.643042
2 -1.120656 -0.571153  1.167240  0.664764  0.458953
3 -0.640889 -0.967961 -0.325135 -1.204231 -0.991863
4  0.271848 -0.746035 -0.084216 -0.017725 -0.909407

此时,我们需要选择数据框中除了 ‘b’ 列以外的所有列。

可以通过 column 的方法结合 Index 属性(比如这里使用的 columns)来实现,选择两端之间的列,即先在 columns 属性中寻找选中列的位置索引,然后将其左侧以及右侧的列都选中,这可以通过切片实现。

cols_to_drop = ['b']
df.loc[:, df.columns.difference(cols_to_drop)]

输出结果如下:

          a         c         d         e
0  0.462680 -0.101197 -1.398227 -0.541607
1  0.159221 -0.251350 -1.160183  0.589136
2  0.727163  1.372272 -0.542677 -2.078538
3 -0.355510 -0.426792 -1.356868 -0.426590
4 -0.222319 -0.547917  2.075945  1.358210

也可以使用 drop 函数去掉对应的列:

df.drop('b', axis=1)

输出结果如下:

          a         c         d         e
0  0.462680 -0.101197 -1.398227 -0.541607
1  0.159221 -0.251350 -1.160183  0.589136
2  0.727163  1.372272 -0.542677 -2.078538
3 -0.355510 -0.426792 -1.356868 -0.426590
4 -0.222319 -0.547917  2.075945  1.358210

以上就是选择除了 Pandas 数据框架中的一个给定列之外的所有列的完整攻略,根据实际需求选择不同方法。