将2d numpy数组分配给pandas DataFrame时发生意外行为

时间:2018-09-03 02:18:13

标签: python pandas numpy

我有以下代码:

x = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
y = np.random.randn(4, 2)
x['A'] = y

我希望由于形状不匹配而引发异常。但是熊猫默默地接受了分配:y的第一列分配给x

这是故意设计吗?如果是,那么背后的理由是什么?

我尝试了pandas 0.21和0.23。


感谢那些试图提供帮助的人。然而,尽管赏金即将到期,但没人能给出令人满意的答案。

让我强调期望得到的答案:

  1. 此设计是否是故意的?是虫子吗?这是错误的设计吗?
  2. 以这种方式进行设计的原理是什么?

由于赏金即将到期,我接受了投票最多的答案。但这并不能为上述问题提供答案。

1 个答案:

答案 0 :(得分:0)

对于

x = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
y = np.random.randn(4, 2)

如果x ['A'] = y;那么将复制列,并且如果我们使用不同的列长度对其进行迭代,例如:

x = pd.DataFrame(np.zeros((4, 3)), columns=['A','B','C'])
y = np.random.randn(4, 2)

并尝试x ['A'] = y,那么也会复制第一列,但是如果我们等于x = y,则x数据帧将与y矩阵一起复制。 所以我想我们在尝试将数据框列与在numpy中创建的matix等同时会出现这种歧义。 希望它能解释