我有以下代码:
x=pd.DataFrame(np.zero((4,1)),columns=['A']
y=np.random.randn(4,2)
x['A']=y
我希望它会抛出一个异常,因为形状不匹配。但是熊猫默默地接受了分配:y的第一列被分配给x
这是故意设计的吗?如果是,背后的理由是什么
我尝试了pandas0.21和0.23
谢谢那些试图帮忙的人。然而,尽管赏金即将到期,但没有人给出令人满意的答案
让我强调一下预期的答案:
- 此设计是否有意?是虫子吗?这是一个错误的设计吗?
- 以这种方式设计它的理由是什么?
由于奖金即将到期,我接受了投票最多的答案。但它并没有回答上述问题
y中的值是未索引的矩阵。案例x['A']=y在这里起作用,因为它从矩阵中获取第一项并将其分配给'A'
同样地
x=pd.DataFrame(np.zero((4,2)),列=['A','B']
y=np.random.randn(4,2)
x[[A',B']]=y
也会起作用,因为额外的数据被熊猫丢弃了。
如果您试图传递更少的列,请说:
x=pd.DataFrame(np.zero((4,2)),列=['A','B']
y=np.random.randn(4,1)
x[[A',B']]=y
这也将起作用,因为它将为两列指定相同的值。这种情况类似于x['A']=0,它将用零替换列A中的所有数据