は、私がデータフレーム内の隣接する列のセットを削除したいと言うと、私のコードは、現在、次のようになります。この作品削除複数のデータフレームの列が
del df['1'], df['2'], df['3'], df['4'], df['5'], df['6']
が、より多くがあった場合、私は思っていました以下のような、それを行うには、効率的でコンパクト、または美的方法:
del df['1','6']
は、私がデータフレーム内の隣接する列のセットを削除したいと言うと、私のコードは、現在、次のようになります。この作品削除複数のデータフレームの列が
del df['1'], df['2'], df['3'], df['4'], df['5'], df['6']
が、より多くがあった場合、私は思っていました以下のような、それを行うには、効率的でコンパクト、または美的方法:
del df['1','6']
私はあなたが選択するために使用される、drop
必要があると思うrange
またはnumpy.arange
:
df = pd.DataFrame({'1':[1,2,3],
'2':[4,5,6],
'3':[7,8,9],
'4':[1,3,5],
'5':[7,8,9],
'6':[1,3,5],
'7':[5,3,6],
'8':[5,3,6],
'9':[7,4,3]})
print (df)
1 2 3 4 5 6 7 8 9
0 1 4 7 1 7 1 5 5 7
1 2 5 8 3 8 3 3 3 4
2 3 6 9 5 9 5 6 6 3
print (np.arange(1,7))
[1 2 3 4 5 6]
print (range(1,7))
range(1, 7)
#convert string column names to int
df.columns = df.columns.astype(int)
df = df.drop(np.arange(1,7), axis=1)
#another solution with range
#df = df.drop(range(1,7), axis=1)
print (df)
7 8 9
0 5 5 7
1 3 3 4
2 6 6 3
あなたはdrop
にslice
オブジェクトを渡すことによって、列を変更せずにこれを行うことができます:
In [29]:
df.drop(df.columns[slice(df.columns.tolist().index('1'),df.columns.tolist().index('6')+1)], axis=1)
Out[29]:
7 8 9
0 5 5 7
1 3 3 4
2 6 6 3
をこれは、カラムエンドポイントの下限と上限の順序位置を返し、これらを渡しますslice
オブジェクトを列配列に対して作成する
「drop」のみを使用する必要はないので、「range」または「np.arange」でいくつかのロジックが使用されているので質問を再度開きます。 – jezrael