为什么将第二列添加到DataFrame中禁止使用LOC以将数组设置为值



如果我用单列创建数据框

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]})

然后 a.loc[0, 'x'] = a.loc[0, 'x']引发错误:

valueerror:用iToserable设置

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

有人可以解释我在这里做错了什么吗?我在这里找到了一个解决方案:即使用set_value代替LOC,但是我想知道为什么loc不起作用。

另外,这是否适合熊猫数据框架?我有一堆矢量x,我想与其他一些变量和索引相关联,并且数据框似乎是存储它们并在它们上运行操作的最佳方法(df.apply非常适合在这些方面进行批量执行操作数组!(。

您可以使用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

最新更新