删除数据框中的列
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 列。以上是关于删除数据框中的列的主要内容,如果未能解决你的问题,请参考以下文章