按名称列出的Pandas数据切片

时间:2017-07-20 21:54:57

标签: python pandas

我正在学习熊猫并尝试理解切片。当我尝试使用列名切片时,一切都有意义。我的数据框如下所示:

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

当我做data['area':'pop']时我希望显示两列,因为我使用的是显式索引,并且切片的开头和结尾都应该是包含的,但结果是一个空数据帧。

我还获得了data['area':]的空数据框。为什么这与其他地方的显式索引切片不同?

2 个答案:

答案 0 :(得分:4)

根据documentation

  

使用DataFrame,在[] 内部切片切片行。这主要是为了方便,因为它是一种常见的操作。

您获得一个空的DataFrame,因为您的索引包含字符串,并且无法找到值' area'并且' pop'那里。这里是你得到的数字索引

>> 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']

答案 1 :(得分:0)

如果您想使用以下两列:

import pandas as pd

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

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

因此,您可以将列列表传递给[],以按顺序选择列。

类似地,只使用区域列:

area = df[['area']]

现在,如果您想获得列的值,请使用:

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

allarea将成为numpy数组。