删除数据框中的列

Posted

技术标签:

【中文标题】删除数据框中的列【英文标题】:Dropping columns in a dataframe 【发布时间】:2017-09-29 03:08:33 【问题描述】:

我使用的是 Python 2.7。我有一个包含 200 列的数据框,需要删除一些。

我可以使用以下内容删除最后 n 列。如何编写它,以便我可以删除前 10 个,然后是第 22 列,然后是第 26 个,最后一个第 10 个,最后 5 个。全部在一行中。

df2 = df.iloc[:, :-5]

【问题讨论】:

【参考方案1】:

使用np.r_:

import numpy as np
df.drop(df.columns[np.r_[:10, 22, 26, -10, -5:0]], axis=1)

np.r_ 连接多个切片。例如,np.r_[1:3, 5, 7:9, -3:0] 返回array([ 1, 2, 5, 7, 8, -3, -2, -1])。您可以使用它来索引df.columns。对于 40 列的 DataFrame(命名为 A1:A40),

df.columns[np.r_[:3, 5, 7:9, -2:0]]
Out: Index(['A1', 'A2', 'A3', 'A6', 'A8', 'A9', 'A39', 'A40'], dtype='object')

最后,由于它需要索引标签,您可以将其传递给df.drop。生成的 DataFrame 将具有以下列:

df.drop(df.columns[np.r_[:3, 5, 7:9, -2:0]], axis=1).columns
Out: 
Index(['A4', 'A5', 'A7', 'A10', 'A11', 'A12', 'A13', 'A14', 'A15', 'A16',
       'A17', 'A18', 'A19', 'A20', 'A21', 'A22', 'A23', 'A24', 'A25', 'A26',
       'A27', 'A28', 'A29', 'A30', 'A31', 'A32', 'A33', 'A34', 'A35', 'A36',
       'A37', 'A38'],
      dtype='object') 

【讨论】:

谢谢,我如何在两者之间添加一个范围,比如 drop col 12-15? 您可以将 np.r_ 部分更改为np.r_[:10, 12:15, 22, 26, -10, -5:0]。如果您将其传递给df.drop(作为df.columns 的索引器),那么它也会删除第12-13-14 列。

以上是关于删除数据框中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何删除R数据框中的列[重复]

从scala中的数据框中删除不需要的列

从不在列表中的每行数据框中的列中删除字符串

如何从熊猫数据框中的列中删除字符串值

删除列表中数据框中的列

从 R 中的数据框中删除重复的列组合