Python 熊猫不掉柱子

Python 熊猫不掉柱子,python,arrays,pandas,numpy,Python,Arrays,Pandas,Numpy,嗨,我尝试过删除基于布尔数组的列,但出于某种奇怪的原因,熊猫似乎根本没有删除列 布尔数组是and(376,)。它只包含真值和假值 for x in range(0,len(analysis)-1): if analysis[x] == False: col = dtest.columns[x] dtest.drop(dtest.columns[x],1) 这是我删除列的代码,本质上分析数组的长度是dtest中的列数 dtest是(4209376)和p

嗨,我尝试过删除基于布尔数组的列,但出于某种奇怪的原因,熊猫似乎根本没有删除列

布尔数组是and(376,)。它只包含真值和假值

for x in range(0,len(analysis)-1): 
    if analysis[x] == False:
        col =  dtest.columns[x]
        dtest.drop(dtest.columns[x],1)
这是我删除列的代码,本质上分析数组的长度是dtest中的列数

dtest是(4209376)和pandas.core.frame.DataFrame

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


非常感谢您的帮助!谢谢:)

您需要重新分配输出:

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

dtest = dtest.drop(cols,1)
print (dtest)
   0  2
0  1  3

但更好的方法是通过
True
mask只选择列,就像另一个答案一样。

您需要重新分配输出:

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

dtest = dtest.drop(cols,1)
print (dtest)
   0  2
0  1  3

但更好的方法是像另一个答案一样,通过
True
mask只选择列。

IIUC您不需要
循环

dtest = dtest.loc[:, analysis]
演示:


IIUC您不需要
循环

dtest = dtest.loc[:, analysis]
演示:


@kimpster,很高兴它有帮助:)@kimpster,很高兴它有帮助:)