Liu*_*Sha 17 python numpy pandas
我有以下代码:
x = pd.DataFrame(np.zeros((4, 1)), columns=['A'])
y = np.random.randn(4, 2)
x['A'] = y
Run Code Online (Sandbox Code Playgroud)
我希望它因为形状不匹配而抛出异常.但是熊猫默默地接受了这个任务:y
第一列被分配给了x
.
这是故意设计吗?如果是的话,背后的理由是什么?
我尝试了pandas
0.21和0.23.
感谢那些试图帮助的人.然而,尽管赏金即将到期,但没有人给出满意的答案.
让我强调一下预期的答案:
由于赏金即将到期,我接受了最多的投票答案.但它没有提供上述问题的答案.
值中的y
是未索引的矩阵.这个案例x['A'] = y
在这里工作,因为它从矩阵中取出第一个项目并将其分配给'A'
.
同样的,
x = pd.DataFrame(np.zeros((4, 2)), columns=['A', 'B'])
y = np.random.randn(4, 2)
x[['A', 'B']] = y
Run Code Online (Sandbox Code Playgroud)
也会工作,因为熊猫会丢弃额外的数据.如果您尝试传递较少的列,请说:
x = pd.DataFrame(np.zeros((4, 2)), columns=['A', 'B'])
y = np.random.randn(4, 1)
x[['A', 'B']] = y
Run Code Online (Sandbox Code Playgroud)
这也将起作用,因为它将为两个列分配相同的值.这种情况类似于用零x['A'] = 0
替换列中的所有数据A
.