如何用一行代码删除python中的许多列?

时间:2019-04-02 15:35:02

标签: python python-3.x pandas

我正在尝试删除数据框中的以下列:1,2,101:117,121:124,126。

到目前为止,我发现删除列的两种方法是:

df.drop(df.columns[2:6],axis=1)
df.drop(df.columns[[0,3,5]],axis=1) 

如果我尝试

df.drop(df.columns[1,2,101:117,121:124],axis=1)

我收到“索引过多”错误

我也尝试过

a=df.drop(df.columns[[1,2]],axis=1)
b=a.drop(a.columns[99:115],axis=1)
c=b.drop(b.columns[102:105],axis=1)
d=c.drop(c.columns[103],axis=1)

但这并不是出于某些原因不会删除我想要的列。

3 个答案:

答案 0 :(得分:3)

使用np.r_进行切片:

import numpy as np

df.drop(columns=df.columns[np.r_[1, 2, 101:117, 121:124, 126]])

import pandas pd
df = pd.DataFrame(np.random.randint(1, 10, (2, 130)))
df.drop(columns=df.columns[np.r_[1, 2, 101:117, 121:124, 126]])
#     0    3    4    5    6 ... 120 124 125  127
#0    6    1    3    7    2 ...   8   7   2    6
#1    1    9    2    5    3 ...   7   3   9    4

答案 1 :(得分:0)

这应该有效:

  

df.drop(df.columns [[indexes_of_columns_you_want_to_delete]],轴= 1,   inplace = True)

答案 2 :(得分:0)

请尝试以下操作:

import numpy as np
import pandas as pd
input_df.drop(input_df.columns[[np.r_[0,2:4]]],axis=1, inplace = True)