传递一系列 pandas 数据会引发 KeyError
Passing a range of a pandas data raises KeyError
我这样做一点问题都没有:
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)
我无法理解它。你能帮忙吗?
感谢您的关注!
当您执行 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
嗨,我知道出了什么问题。
每当将 pandas.Series
对象传递给函数时,它都会带来相应的原始索引。这就是问题所在。
我写了一个额外的检查例程来解决错误:
if isinstance(var_a, pd.Series):
var_a_ini = var_a.index[0]
else:
var_a_ini = var_a[0]
在处理 pandas.Series
的情况下,当您将它的一部分切出以传递给基于索引引用运行的函数时,应格外小心。
我这样做一点问题都没有:
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)
我无法理解它。你能帮忙吗? 感谢您的关注!
当您执行 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
嗨,我知道出了什么问题。
每当将 pandas.Series
对象传递给函数时,它都会带来相应的原始索引。这就是问题所在。
我写了一个额外的检查例程来解决错误:
if isinstance(var_a, pd.Series):
var_a_ini = var_a.index[0]
else:
var_a_ini = var_a[0]
在处理 pandas.Series
的情况下,当您将它的一部分切出以传递给基于索引引用运行的函数时,应格外小心。