pandas Series KeyError: -1

前几天写分析方法,遇到的一个错误:

具体我已经在stackoverflow 里面得到了详细的解答,下面我把问题和解决办法总结一下,方便日后的回顾

问题:

sql = "select {}, {} from {} where {};".format(v1, v2, table, where)
        df = pd.read_sql(sql, app.config.get(‘sqlalchemy_engine‘))
        df_dropna = df.dropna()
        dddd = df_dropna[v2]
        print type(dddd)
        print dddd[1]
        # print dddd # Have the answer
        print dddd[-1] # keyerror: -1

错误:

File "/usr/lib/python2.7/dist-packages/flask/app.py", line 2000, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1991, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1567, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/opt/code/my_code/app4wp/app/views.py", line 136, in varianc_get
    print dddd[-1]
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/series.py", line 601, in __getitem__
    result = self.index.get_value(self, key)
  File "/usr/local/lib/python2.7/dist-packages/pandas/indexes/base.py", line 2169, in get_value
    tz=getattr(series.dtype, ‘tz‘, None))
  File "pandas/index.pyx", line 105, in pandas.index.IndexEngine.get_value (pandas/index.c:3567)

  File "pandas/index.pyx", line 113, in pandas.index.IndexEngine.get_value (pandas/index.c:3250)

  File "pandas/index.pyx", line 161, in pandas.index.IndexEngine.get_loc (pandas/index.c:4289)

  File "pandas/src/hashtable_class_helper.pxi", line 404, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:8555)

  File "pandas/src/hashtable_class_helper.pxi", line 410, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:8499)

KeyError: -1

为什么呢?

When you use dddd[-1] it is looking for a column with the -1 key, that does not exist. So, to do index slicing you must use .iloc. Pandas dataframes work differently from regular python lists,d ictionaries and etc....

哈哈,就这么解决了!!!

print dddd.iloc[-1]
时间: 2024-10-05 04:28:52

pandas Series KeyError: -1的相关文章

pandas数组(pandas Series)-(2)

pandas Series 比 numpy array 要强大很多,体现在很多方面 首先, pandas Series 有一些方法,比如: describe 方法可以给出 Series 的一些分析数据: import pandas as pd s = pd.Series([1,2,3,4]) d = s.describe()print(d) count 4.000000 mean 2.500000 std 1.290994 min 1.000000 25% 1.750000 50% 2.5000

pandas数组(pandas Series)-(3)向量化运算

这篇介绍下有index索引的pandas Series是如何进行向量化运算的: 1. index索引数组相同: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) s2 = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']) print s1 + s2 a 11 b 22 c 33 d 44 dtype: int64 直接把各个索引对应的值进行相加 2. index索引数组值

pandas数组(pandas Series)-(4)NaN的处理

上一篇pandas数组(pandas Series)-(3)向量化运算里说到,将两个 pandas Series 进行向量化运算的时候,如果某个 key 索引只在其中一个 Series 里出现,计算的结果会是 NaN ,那么有什么办法能处理 NaN 呢? 1.  dropna() 方法: 此方法会把所有为 NaN 结果的值都丢弃,相当于只计算共有的 key 索引对应的值: import pandas as pd s1 = pd.Series([1, 2, 3, 4], index=['a', '

pandas数组(pandas Series)-(5)apply方法自定义函数

有时候需要对 pandas Series 里的值进行一些操作,但是没有内置函数,这时候可以自己写一个函数,使用 pandas Series 的 apply 方法,可以对里面的每个值都调用这个函数,然后返回一个新的 Series import pandas as pd s = pd.Series([1, 2, 3, 4, 5]) def add_one(x): return x + 1 print s.apply(add_one) # 结果: 0 2 1 3 2 4 3 5 4 6 dtype:

数据分析2 numpy(ndarray数组,属性,创建,索引切片,运算,函数,随机数), Pandas(Series创建,缺失值处理,特性,索引,DataFrame)

Numpy numpy数据类型 1.为啥使用numpy ? ndarray是一个多维数组列表 Numpy的核心特征就是N-维数组对----ndarray 它和python中的列表区别: 1.数组对象内元素类型必须相同 2.数组大小不可修改 2.创建ndarray     数组 3.常见的属性 数据类型 astype()方法可以修改数组类型 4.ndarray的创建方式 5.索引 6.切片 7.数组的向量运算和矢量运算 8. 布尔型索引 9.花式索引 10.一元函数 11.数学统计函数 12.随机

Pandas Series笔记

1.指向单元素的,类型为元素的类型 2.指向多个元素的,类型为Series 3.如果用索引切片,索引是非整型的,实际按照索引顺序取值,且包含末端 4.如果指定的索引不存在,则会报错 5.可以根据元素的条件选择 6.可以有name.index.values三个属性 7.in针对的是索引 8.指定索引创建Series时,结果和索引完全一致,没有索引项的数据被丢弃 9.isnull和notnull或者比较函数,返回一个同结构的bool数组,可以用于选择内容(同5)

【pandas】pandas.Series.str.split()---字符串分割

原创博文,转载请注明出处! 本文代码的github地址 例子: 1 # -*- coding: utf-8 -*- 2 # 创建dataframe 3 import pandas as pd 4 s = pd.DataFrame(['a,b,c','c,d,e']) 5 print(s) 6 """ 7 0 8 0 a,b,c 9 1 c,d,e 10 """ 11 # 字符串拆分--expend = False 12 temp_expend_F

Pandas系列(一)-Series详解

一.初始Series Series 是一个带有 名称 和索引的一维数组,既然是数组,肯定要说到的就是数组中的元素类型,在 Series 中包含的数据类型可以是整数.浮点.字符串.Python对象等. pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False) 创建第一个Series import pandas as pd user_age = pd.Series(data=[18,

Pandas 学习 第2篇:pandas 的 Series

pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,最常用的数据结构是:序列Series和数据框DataFrame. 序列是具有单一类型的一维数组,表示多行一列的数据结构,由于一列中的元素必须是相同的,因此,序列中的数据具有相同的数据类型:行具有索引和行标签属性,每行都有一个索引和行标签.而DataFrame类似于二维的关系表,每列的数据类型是相同的. 一,pandas的数据类型 用dtype属性来显示元素的数据类型,pandas主要有以下几种dtype: ob