首页 > 解决方案 > 如何用相同的数组填充熊猫数据框

问题描述

尝试用数组填充熊猫数据框(比如说 np.zeros(200))。

如果我们想用一个值填充一个 pandas 数据框:

for col in df.columns:
    df[col].values[:] = 2

它工作正常,但做同样的事情:

for col in df.columns:
    df[col].values[:] = np.zeros(200)

不管用。

我不明白为什么会抛出错误(无法将输入数组 X 广播到形状 Y 中),因为我认为我正在单独填充数据帧的每个值,因此我认为形状无关紧要。

标签: pythonpandasdataframe

解决方案


如您所知,pandas 是建立在 numpy 之上的。当你这样做:

df[col].values[:] # This return a series

你得到一个系列,它就像一个 numpy 数组。

现在当你做

np.zeros(200)

你得到一个一维数组,但是你得到的错误告诉你你的 pandas 系列的长度与你的 numpy 数组的长度不同。

要做你想做的事,你最好这样做:

df.iloc[:,:] = 0

一般来说,尽量避免在数组上循环,大多数时候都有内置的方法可以完成这项工作。


推荐阅读