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

2024-03-28 23:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我用一列创建一个数据帧

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: Must have equal len keys and value when setting with an iterable

有人能解释一下我做错了什么吗?我找到了一个解决办法here:即用set_value代替loc,但我想知道为什么loc不起作用。你知道吗

另外,这是熊猫数据帧的适当用法吗?我有一堆向量x,我想与一些其他变量和索引相关联,而数据帧似乎是存储它们并对它们运行操作的最佳方式(df.apply在这些数组上执行批量操作效果非常好!)。你知道吗


Tags: and数据dataframelenvaluehave错误np