我完全没有问题:
fun_abc(datax.time,datax.data,20)
其中datax是pandas.DataFrame
,其中time
和data
是列。
但是,当我尝试将范围传递给函数时,我得到KeyError: 0
。
fun_abc(datax.time[100:120],datax.data[100:120],20)
我无法理解它。请你帮忙吗? 谢谢你的关注!
答案 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
时,如果将其中的一部分切出来传递给基于索引引用的函数,则应特别小心。