传递一系列pandas数据会引发KeyError

时间:2015-02-14 16:20:20

标签: python python-2.7 pandas

我完全没有问题:

fun_abc(datax.time,datax.data,20)

其中datax是pandas.DataFrame,其中timedata是列。

但是,当我尝试将范围传递给函数时,我得到KeyError: 0

fun_abc(datax.time[100:120],datax.data[100:120],20)

我无法理解它。请你帮忙吗? 谢谢你的关注!

2 个答案:

答案 0 :(得分:1)

执行datax.time[100:120]时,您无法再访问索引0。

例如:

In [36]: import pandas as pd

In [37]: import numpy as np

In [38]: df = pd.DataFrame(np.arange(12).reshape(4,3))

In [39]: df[0][1:3]
Out[39]: 
1    3
2    6
Name: 0, dtype: int64

In [40]: df[0][1:3][0]

KeyError: 0

中的结果

答案 1 :(得分:1)

嗨,我弄清楚出了什么问题。

只要将pandas.Series对象传递给函数,它就会自带相应的ORIGINAL索引。这就是出错的地方。

我写了一个额外的检查例程来解决错误:

if isinstance(var_a, pd.Series):
        var_a_ini = var_a.index[0]
    else:
        var_a_ini = var_a[0]

在处理pandas.Series时,如果将其中的一部分切出来传递给基于索引引用的函数,则应特别小心。