2017-08-09 4 views
1

こんにちは私はブール配列に基づいて列をドロップしようとしましたが、何らかの奇妙な理由でパンダが列を全くドロップしていないようです。パンダが列をドロップしない

ブール値の配列は、(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が、それは分析中Falsesを検出しないで、またそれだけで正確COL変数をプリントアウトすることができますが、何らかの理由で列を削除しないでください。

大変ありがとうございます。感謝:)

答えて

4

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 
+0

感謝を!魅力のように働いた – kimpster

+0

@kimpster、それは助けて嬉しい:) – MaxU

3

あなたは戻って出力を割り当てる必要があります。

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マスクで列のみを選択しています。

関連する問題