大家好我一直试图在pandas上删除2列Excel数据框,使用这样的drop命令
energy = energy.drop(energy.columns[[0 , 1]], axis= 1 )
然而,我无法避免视图中的列。最后我感觉到我应该删除的列作为我机器上的多级索引。最后我试图从这个中删除其中一个级别
energy.index = energy.index.droplevel(2)
但我仍然无法避免如何避免这些专栏。
我附上了我的作品enter image description here
的屏幕副本答案 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)