【发布时间】:2015-04-16 19:02:21
【问题描述】:
我有一些数据,当我导入它时,我得到以下不需要的列我正在寻找一种简单的方法来删除所有这些
'Unnamed: 24', 'Unnamed: 25', 'Unnamed: 26', 'Unnamed: 27',
'Unnamed: 28', 'Unnamed: 29', 'Unnamed: 30', 'Unnamed: 31',
'Unnamed: 32', 'Unnamed: 33', 'Unnamed: 34', 'Unnamed: 35',
'Unnamed: 36', 'Unnamed: 37', 'Unnamed: 38', 'Unnamed: 39',
'Unnamed: 40', 'Unnamed: 41', 'Unnamed: 42', 'Unnamed: 43',
'Unnamed: 44', 'Unnamed: 45', 'Unnamed: 46', 'Unnamed: 47',
'Unnamed: 48', 'Unnamed: 49', 'Unnamed: 50', 'Unnamed: 51',
'Unnamed: 52', 'Unnamed: 53', 'Unnamed: 54', 'Unnamed: 55',
'Unnamed: 56', 'Unnamed: 57', 'Unnamed: 58', 'Unnamed: 59',
'Unnamed: 60'
它们由 0 索引索引,所以我尝试了类似
df.drop(df.columns[[22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32 ,55]], axis=1, inplace=True)
但这不是很有效。我尝试编写一些 for 循环,但这让我觉得 Pandas 的行为很糟糕。所以我在这里问这个问题。
我见过一些类似的例子 (Drop multiple columns pandas) 但这并不能回答我的问题。
【问题讨论】:
-
什么意思,高效?是不是跑得太慢了?如果您的问题是您不想获取要删除的所有列的索引,请注意您可以只给
df.drop列名列表:df.drop(['Unnamed: 24', 'Unnamed: 25', ...], axis=1) -
只对感兴趣的列进行子集化会不会更容易:即
df = df[cols_of_interest],否则您可以按列切片df并获取列df.drop(df.ix[:,'Unnamed: 24':'Unnamed: 60'].head(0).columns, axis=1) -
我的意思是打字效率低或“代码不好”
-
可能值得注意的是,在大多数情况下,保留所需的列然后删除不需要的列会更容易:df = df['col_list']