首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除Pandas中的多个DataFrame列

删除Pandas中的多个DataFrame列
EN

Stack Overflow用户
提问于 2017-02-08 22:54:04
回答 2查看 1.4K关注 0票数 1

假设我想删除DataFrame中的一组相邻列,我的代码目前看起来像这样:

代码语言:javascript
运行
复制
del df['1'], df['2'], df['3'], df['4'], df['5'], df['6']

这是可行的,但我想知道是否有更有效、更紧凑或更美观的方法,例如:

代码语言:javascript
运行
复制
del df['1','6']
EN

回答 2

Stack Overflow用户

发布于 2017-02-08 22:55:36

我认为你需要drop,因为选择使用的是range还是numpy.arange

代码语言:javascript
运行
复制
df = pd.DataFrame({'1':[1,2,3],
                   '2':[4,5,6],
                   '3':[7,8,9],
                   '4':[1,3,5],
                   '5':[7,8,9],
                   '6':[1,3,5],
                   '7':[5,3,6],
                   '8':[5,3,6],
                   '9':[7,4,3]})

print (df)
   1  2  3  4  5  6  7  8  9
0  1  4  7  1  7  1  5  5  7
1  2  5  8  3  8  3  3  3  4
2  3  6  9  5  9  5  6  6  3

print (np.arange(1,7))
[1 2 3 4 5 6]

print (range(1,7))
range(1, 7)

#convert string column names to int
df.columns = df.columns.astype(int)
df = df.drop(np.arange(1,7), axis=1)
#another solution with range
#df = df.drop(range(1,7), axis=1)
print (df)
   7  8  9
0  5  5  7
1  3  3  4
2  6  6  3
票数 0
EN

Stack Overflow用户

发布于 2017-02-08 23:10:10

您可以在不修改列的情况下完成此操作,方法是将slice对象传递给drop

代码语言:javascript
运行
复制
In [29]:
df.drop(df.columns[slice(df.columns.tolist().index('1'),df.columns.tolist().index('6')+1)], axis=1)

Out[29]:
       7  8  9
    0  5  5  7
    1  3  3  4
    2  6  6  3

因此,这将返回列端点的下界和上界的顺序位置,并传递这些位置以针对列数组创建一个slice对象

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42116395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档