如何在pandas数据框上删除多个列

时间:2016-11-30 20:09:41

标签: python pandas

大家好我一直试图在pandas上删除2列Excel数据框,使用这样的drop命令

energy = energy.drop(energy.columns[[0 , 1]], axis= 1 )

然而,我无法避免视图中的列。最后我感觉到我应该删除的列作为我机器上的多级索引。最后我试图从这个中删除其中一个级别

energy.index = energy.index.droplevel(2)

但我仍然无法避免如何避免这些专栏。

我附上了我的作品enter image description here

的屏幕副本

4 个答案:

答案 0 :(得分:1)

您可以像下面那样对数据框进行子集化,而不是删除列:

In [3]: mydf = pd.DataFrame({"A":[1,2,3,4],"B":[4,3,2,1], "C":[3,4,5,3],"D":[6,4,3,2]})
In [4]: mydf
Out[4]:
   A  B  C  D
0  1  4  3  6
1  2  3  4  4
2  3  2  5  3
3  4  1  3  2
In [5]: mydf[mydf.columns[2:]]
Out[5]:
   C  D
0  3  6
1  4  4
2  5  3
3  3  2

如果您尝试删除前两列,例如,这将有效。它的工作原理是创建一个包含df.columns的列表,然后将其分组并应用于您的数据框。然后,您可能希望将新数据帧设置为变量。 如果要删除的列不相邻,则可以遍历要删除的列列表:

In [7]: mydf1 = mydf.copy()
In [8]: for col in ["A","D"]:
   ...:     mydf1 = mydf1.drop(col,axis=1)

In [9]: mydf1
Out[9]:
   B  C
0  4  3
1  3  4
2  2  5
3  1  3

答案 1 :(得分:1)

尝试简单地重命名列

说你有

document.write('fnj');

然后

In: df.columns 

Out: MultiIndex(levels=[['BURGLARY', 'GRAND LARCENY', 'GRAND LARCENY OF MOTOR 
     VEHICLE', 'TMAX', 'TMIN'], ['count', 'mean']],
     labels=[[0, 1, 2, 3, 4], [0, 0, 0, 1, 1]])

In: df.columns = ['Burglary', 'Grand Larceny', 'Grand Larceny on Motor Vehicle', 
    'TMAX', 'TMIN']

答案 2 :(得分:0)

如果您确实要删除列,可以使用del

>>> df = pd.DataFrame({'A':range(3),'B':list('abc'), 'C':range(3,6), 'D':list('gde')})
>>> for x in ['A', 'B']:
...     del df[x]
... 
>>> df
   C  D
0  3  g
1  4  d
2  5  e

答案 3 :(得分:-1)

这可能会有所帮助

energy.drop(energy.columns[[0,1]] , axis=1, inplace=True)