2017-07-20 15 views
1

私はパンダを学んでいて、スライスを理解しようとしています。列名を使用してスライスしようとすると、すべて意味が分かります。私のデータフレームは、次のようになります。パンダのデータを列名でスライス

   area  pop 
California 423967 38332521 
Florida  170312 19552860 
Illinois 149995 12882135 
New York 141297 19651127 
Texas  695662 26448193 

と私はdata['area':'pop']を行うとき、私は、私は、明示的なインデックスとスライスの開始と終了の両方を包括する必要があります使用していますが、結果が空であるため、両方の列を示すことが期待しましたデータフレーム。

data['area':]の空のデータフレームも取得します。他の場所で明示的なインデックスを使用してスライスすることと異なるのはなぜですか?あなたが取得したい場合は

+0

です。より多くの情報が必要な場合はお知らせください。 – sera

答えて

3

[] スライス行の内部スライス、データフレームとdocumentation

によります。これは、このような一般的な操作であるため、便宜的に提供されます。

インデックスに文字列が含まれていて、そこに値 'area'と 'pop'を見つけることができないため、空のDataFrameが表示されます。ここでは、数値インデックスの場合には何を得るあなたの代わりに欲しい

>> data.reset_index()['area':'pop'] 
TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [area] of <class 'str'> 

は、私は、インデックスがあなたのケースでどのように動作するかを示すの答えを掲載

>> data.loc[:, 'area':'pop'] 
0

は2列は使用:

import pandas as pd 

#data = pd.read_csv('data.csv', header = True) 

all = data[['area','pop']] 

だからあなたがその順序で列を選択するには[]に列のリストを渡すことができます。

all = data[['area','pop']].values 
area = df[['area']].values 

allareaである:あなたが使用列の値を取得したい場合は、今すぐ

area = df[['area']] 

と似ては、領域のみの列の使用を取得します数が少ない配列になるだろう。

関連する問題