Skip to main content
 首页 » 编程设计

python之Pandas 不掉列

2025年05月04日15xxx_UU

您好,我尝试删除基于 bool 数组的列,但出于某些奇怪的原因,pandas 似乎根本没有删除列。

bool 数组是 and (376,)。它只包含 True 和 False 值。

for x in range(0,len(analysis)-1):  
    if analysis[x] == False: 
        col =  dtest.columns[x] 
        dtest.drop(dtest.columns[x],1) 

这是我删除列的代码,本质上分析数组的长度是 dtest 中的列数。

dtest 是 (4209, 376) & pandas.core.frame.DataFrame

我试过调试,它确实检测到分析中的错误,也能够准确地打印出 col 变量,但由于某种原因它不会删除列。

非常感谢任何帮助!谢谢:)

请您参考如下方法:

IIUC 你不需要loop:

dtest = dtest.loc[:, analysis] 

演示:

In [320]: df = pd.DataFrame(np.random.rand(5, 10), columns=list(range(1, 11))) 
 
In [321]: df 
Out[321]: 
         1         2         3         4         5         6         7         8         9         10 
0  0.332792  0.927047  0.899874  0.294391  0.762800  0.861521  0.988783  0.475127  0.033096  0.980141 
1  0.447273  0.268828  0.951633  0.947425  0.020006  0.808608  0.607091  0.712309  0.383256  0.248582 
2  0.169946  0.951702  0.671014  0.514326  0.607129  0.227021  0.831474  0.696117  0.799418  0.224851 
3  0.724165  0.748455  0.452430  0.941572  0.873344  0.877872  0.925788  0.183115  0.113217  0.072717 
4  0.303488  0.426459  0.750076  0.225662  0.298983  0.729585  0.692489  0.934778  0.124634  0.274208 
 
In [322]: analysis = np.random.choice([True, False], 10) 
 
In [323]: analysis 
Out[323]: array([ True,  True,  True, False,  True,  True,  True, False, False,  True], dtype=bool) 
 
In [324]: df = df.loc[:, analysis] 
 
In [325]: df 
Out[325]: 
         1         2         3         5         6         7         10 
0  0.332792  0.927047  0.899874  0.762800  0.861521  0.988783  0.980141 
1  0.447273  0.268828  0.951633  0.020006  0.808608  0.607091  0.248582 
2  0.169946  0.951702  0.671014  0.607129  0.227021  0.831474  0.224851 
3  0.724165  0.748455  0.452430  0.873344  0.877872  0.925788  0.072717 
4  0.303488  0.426459  0.750076  0.298983  0.729585  0.692489  0.274208