18

要するに...「read_table」を使用してExcelファイルから読み込まれるPython Pandasデータフレームがあります。データからいくつかのシリーズを保持し、残りを消去したいと思います。「del data['SeriesName']」を使用して、不要なものを 1 つずつ削除できることはわかっていますが、何を削除するかを指定するのではなく、何を保持するかを指定することをお勧めします。

最も簡単な答えが、必要なシリーズのみを含む新しいデータ フレームに既存のデータ フレームをコピーし、既存のフレームを完全に削除することである場合、その解決策に満足します...しかし、それが実際に最善である場合方法、誰かが私にそれを説明してもらえますか?

TIA ... 私はパンダの初心者です。:)

4

3 に答える 3

37

関数を使用しDataFrame dropて列を削除できます。axis=1行ではなく列で機能するには、オプションを渡す必要があります。コピーを返すため、結果を new に割り当てる必要があることに注意してくださいDataFrame

In [1]: from pandas import *

In [2]: df = DataFrame(dict(x=[0,0,1,0,1], y=[1,0,1,1,0], z=[0,0,1,0,1]))

In [3]: df
Out[3]:
   x  y  z
0  0  1  0
1  0  0  0
2  1  1  1
3  0  1  0
4  1  0  1

In [4]: df = df.drop(['x','y'], axis=1)

In [5]: df
Out[5]:
   z
0  0
1  0
2  1
3  0
4  1
于 2013-01-16T17:01:31.107 に答える
15

基本的には Zelazny7 の回答と同じです - 保持するものを指定するだけです:

In [68]: df
Out[68]: 
   x  y  z
0  0  1  0
1  0  0  0
2  1  1  1
3  0  1  0
4  1  0  1

In [70]: df = df[['x','z']]                                                                

In [71]: df
Out[71]: 
   x  z
0  0  0
1  0  0
2  1  1
3  0  0
4  1  1

*編集*

オブジェクトへのインデックス作成/スライスにより、多数の列を指定できますDataframe.columns
このオブジェクトは、列ラベルのtype(pandas.Index)として表示できますdict(いくつかの拡張機能付き)。

上記の例のこの拡張を参照してください。

In [4]: df.columns
Out[4]: Index([x, y, z], dtype=object)

In [5]: df[df.columns[1:]]
Out[5]: 
   y  z
0  1  0
1  0  0
2  1  1
3  1  0
4  0  1

In [7]: df.drop(df.columns[1:], axis=1)
Out[7]: 
   x
0  0
1  0
2  1
3  0
4  1
于 2013-01-16T17:03:39.730 に答える