【问题标题】:Adding np arrays to existing pandas dataframe将 np 数组添加到现有的 pandas 数据框
【发布时间】:2018-04-16 02:33:57
【问题描述】:

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

我创建了一个已经填充了值的 pandas 数据框,比如说维度 (4,3)

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

我现在要做的是追加十列,每列包含一个 numpy 数组,其中填充了 38 个零。

当我第一次将数组转换为字符串然后将其添加到原始 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,谢谢您的回答。上面的例子有效,唯一的问题是它将字符串添加到我的 df 而不是数组。

标签: python arrays pandas numpy dataframe


【解决方案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,你能检查一下这个stackoverflow.com/questions/47095122/…
  • 这正是我所需要的。非常感谢!
  • @StormyJ.Mireles - 欢迎您!如果我的回答有帮助,请不要忘记 accept 它 - 单击答案旁边的复选标记 () 将其从灰色切换为已填充。谢谢。
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2021-05-03
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多