我正在学习熊猫并尝试理解切片。当我尝试使用列名切片时,一切都有意义。我的数据框如下所示:
area pop
California 423967 38332521
Florida 170312 19552860
Illinois 149995 12882135
New York 141297 19651127
Texas 695662 26448193
当我做data['area':'pop']
时我希望显示两列,因为我使用的是显式索引,并且切片的开头和结尾都应该是包含的,但结果是一个空数据帧。
我还获得了data['area':]
的空数据框。为什么这与其他地方的显式索引切片不同?
答案 0 :(得分:4)
使用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
all
和area
将成为numpy数组。