删除pandas中的单个和范围列[重复]

问题描述 投票:2回答:3

这个问题在这里已有答案:

放弃columns[3]columns[9:15]的最快方法是什么? (我只能使用df.drop方法在两个步骤中删除列)

    1  2  3  4  5  6 ..  n
A   x  x  x  x  x  x ..  x
B   x  x  x  x  x  x ..  x
C   x  x  x  x  x  x ..  x 
python python-3.x pandas dataframe indexing
3个回答
3
投票

事实上,你可以一步使用pd.DataFrame.drop。您可以使用np.r_组合多个索引和范围。这是一个演示:

df = pd.DataFrame(np.random.random((3, 20)))

print(df.columns)  # RangeIndex(start=0, stop=20, step=1)

res = df.drop(np.r_[3, 9:15], 1)

print(res.columns)

# Int64Index([0, 1, 2, 4, 5, 6, 7, 8, 15, 16, 17, 18, 19], dtype='int64')

1
投票

使用方法如下:

>>> df
   A  B   C   D
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

>>> df.drop(['B', 'C'], axis=1)
   A   D
0  0   3
1  4   7
2  8  11

0
投票

使用简单的locisin

cols = df.columns.tolist()
to_remove = cols[9:15] + [cols[3]]

df.loc[:, ~df.columns.isin(to_remove)]

np.r_太好了我会跟着它;)

© www.soinside.com 2019 - 2024. All rights reserved.