将np数组添加到现有的pandas数据帧

时间:2017-11-03 11:14:17

标签: python arrays pandas numpy dataframe

我一直试图找出一段时间我遇到的问题,但不知何故我找不到解决方案。

我已经创建了一个已经填充了值的pandas数据框,让我们说尺寸(4,3)

df=
  A    B    C
0 valX valX valX
1 valY valY valY
2 valZ valZ valZ
3 valW valW valW

我现在要做的是追加10个额外的列,每个列包含一个填充38个零的numpy数组。

当我第一次将数组转换为字符串然后将其添加到原始df时,我的解决方案似乎正常工作。

然而,熊猫并不接受一个普通的numpy数组。 我需要列的值是一个numpy数组,因为我稍后会对它们进行一些sklearn计算。

稍后在我的代码中,我用某些字符的单热编码替换某些列。剩余的列充当零填充。

我的代码示例(适用于添加10列):

#create empty array
x = np.zeros(38)
for i in range(0, 10):
    col_name = "char_" + str(i)

    df[col_name] = str(x)

这里的问题是我需要将x转换为字符串。如果我将它保持为numpy数组,它会抛出这个错误:

ValueError: Length of values does not match length of index

1 个答案:

答案 0 :(得分:1)

使用:

x = np.zeros(38)
for i in range(0, 10):
    col_name = "char_" + str(i)

    df[col_name] = pd.Series([x], index=df.index)
print (type(df.loc[0,'char_9']))
<class 'numpy.ndarray'>