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

3

我一直在努力解决一个问题,但是不知道为什么一直找不到解决方案。

我创建了一个已经填充了值的pandas数据帧,假设它的尺寸为(4,3)。

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

我现在想要做的是添加十个附加列,每一列都包含一个由38个零填充的numpy数组。
当我将我的数组转换为字符串并将其添加到原始df时,我的解决方案似乎有效。
然而,Pandas不接受普通的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

你需要 df[col_name] = x.astype(str) 吗? - jezrael
嗨,jezrael,感谢您的回答。上面的示例有效,唯一的问题是它将字符串添加到我的df中而不是数组。 - user8880123
1个回答

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'>

Jezrael,你能检查一下这个链接吗?https://stackoverflow.com/questions/47095122/removing-duplicates-with-ignoring-case-sensitive-and-adding-the-next-column-valu - Pyd
这正是我所需要的。非常感谢! - user8880123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接