为什么在数据帧中添加第二列禁止使用loc将数组设置为值?

时间:2017-06-05 20:38:45

标签: python pandas

如果我创建一个包含单列的数据框

mElements

然后重新分配第一行的值

a = pd.DataFrame({'x': [np.array([1,2,3,4]), np.array([1,2,3])]})

a.loc[0, 'x'] = a.loc[0, 'x'] 没有变化。一切都很好!

但是,如果我添加第二列

a.loc[0, 'x']

然后a = pd.DataFrame({'x': [np.array([1,2,3,4]), np.array([1,2,3])], 'y':[1,2]}) 抛出错误:

  

ValueError:使用可迭代

设置时必须具有相等的len键和值

有人可以解释我在这里做错了吗?我找到了一个解决方案here:即使用a.loc[0, 'x'] = a.loc[0, 'x']代替loc,但我想知道为什么set_value不起作用。

另外,这是pandas DataFrame的合适用法吗?我有一堆向量loc,我想与其他变量和索引相关联,而DataFrame似乎是存储它们并在它们上运行操作的最佳方式(x非常有效以及在这些阵列上批量执行操作!)。

1 个答案:

答案 0 :(得分:0)

您可以使用set_value:

a.set_value(0,'x',a.loc[0, 'x'])
Out[619]: 
              x  y
0  [1, 2, 3, 4]  1
1     [1, 2, 3]  2