Python中Series的切片和索引雷区
问题
在学习pandas的过程中,做了这样一个练习:
数据集——全球排名靠前的10000本书的数据
统计要求——统计不同年份书的数量
输出结果——通过条形图展示数据
在提取有效数据的过程中,出现了代码报错 KeyError: 50
提取有效数据的代码如下
data1 = df[pd.notnull(df['original_publication_year'])]
# 对数据按年份字段进行分组,并计数,正序排序,取前30
grouped = data1.groupby(by='original_publication_year')['id'].count().sort_values(ascending=False)[:50]
print(grouped)
这里尝试对一个Series进行切片操作[:50],取前50条数据
报错如下
解决方法是不直接采用 [:50] 对数据进行切片,改为用 iloc[:50] 切片,或者直接取 head(50)
分析
之前做过另一个练习,也是对一个Series取前几条数据的操作,[:50]是可以实现的,这里却报错了,很奇怪
首先理解Series切片的原理,假设有这样一个数据集,对其取前3条数据
t = pd.Series(np.arange(10