我正在创建一个简单的数据框,如下所示。
cache_df = pd.DataFrame(columns=['ticker', 'maturity', 'rate', 'datetime'])
cache_df = cache_df.set_index(['ticker', 'maturity'])
当我尝试添加一行时,我收到的错误是我无法理解的。谁能帮我理解为什么?
cache_df.loc[symbolName, expiry] = [rate, updateTime]
我得到了
ValueError:无法使用带有的多索引选择索引器进行设置 长度不同于值
并且在错误消息之后我的数据框看起来很奇怪。
Out[106]:
rate datetime 2016-11-18 00:00:00
ticker maturity
GECC NaN NaN NaN
如果我这样做
cache_df.loc[[1,2]] = [3,4]
我得到了一个不同的错误:
ValueError:零大小数组到减少操作的最大值 没有身份
答案 0 :(得分:1)
好的,在花了将近两个小时的谷歌搜索可能的原因后,我想出了原因。问题在于多索引。我想这里可以使用更有用的错误消息。
使用多索引数据框,loc需要是显式的。
以下代码解决了该问题。
cache_df.loc[(symbolName, expiry), :] = [rate, updateTime]