【问题标题】:Python inserting a row in a 2DarrayPython在二维数组中插入一行
【发布时间】:2015-07-04 17:55:43
【问题描述】:

我有一个 5x17511 二维数组 (name = 'da'),由 pandas.read_csv(...)

我还为这样的索引添加了一列:da.index = pd.date_range(...)

所以我的二维数组现在有 6x17511 大小。

我想在这个二维数组中再插入/追加一行,怎么做?

我已经尝试过:np.insert(da,1,np.array((1,2,3,4,5,6)), 0) 但它说:

ValueError: 传递值的形状是 (6, 17512),索引暗示 (6, 17511)

提前致谢!

【问题讨论】:

  • 你试过DataFrame.ix[index] = row吗?
  • append 就是为此而设计的
  • 索引解决方案不起作用:ValueError:值的长度与索引的长度不匹配追加不以某种方式执行任何操作。

标签: python arrays numpy pandas


【解决方案1】:

我假设这是一个 numpy 问题而不是 pandas 问题......

你可以试试 vstack ...

import numpy as np
da = np.random.rand(17511, 6)
newrow = np.array((1,2,3,4,5,6))
da = np.vstack([da, newrow])

产生...

In [5]: da
Out[5]: 
array([[ 0.50203777,  0.55102172,  0.74798053,  0.57291239,  0.38977322,
         0.40878739],
       [ 0.9960413 ,  0.22293403,  0.34136638,  0.12845067,  0.20262593,
         0.50798698],
       [ 0.05298782,  0.09129754,  0.40833606,  0.67150583,  0.19569471,
         0.75176924],
       ..., 
       [ 0.97927055,  0.44649323,  0.84851791,  0.05370892,  0.94375771,
         0.24508979],
       [ 0.85952039,  0.2852414 ,  0.85662827,  0.97665465,  0.65528357,
         0.71483845],
       [ 1.        ,  2.        ,  3.        ,  4.        ,  5.        ,
         6.        ]])

In [6]: len(da)
Out[6]: 17512

而且(尽管随机数不同),我可以按如下方式访问 numpy 数组的顶部和底部...

In [9]: da[:5]
Out[9]: 
array([[ 0.76697236,  0.96475768,  0.09145486,  0.27159858,  0.05160006,
         0.66495098],
       [ 0.62635043,  0.1316334 ,  0.66257157,  0.99141318,  0.77212699,
         0.17016979],
       [ 0.86705298,  0.11120927,  0.29585339,  0.44128326,  0.32290492,
         0.99298705],
       [ 0.74053894,  0.90743885,  0.99838398,  0.40713677,  0.17337202,
         0.56982539],
       [ 0.99136919,  0.13045787,  0.67881652,  0.03814385,  0.98036307,
         0.53594215]])

In [10]: da[-5:]
Out[10]: 
array([[ 0.8793664 ,  0.0392912 ,  0.8106504 ,  0.17920025,  0.26767578,
         0.98386519],
       [ 0.41231276,  0.02633723,  0.7872108 ,  0.60894162,  0.5358851 ,
         0.65758067],
       [ 0.10341791,  0.48079533,  0.1638601 ,  0.5470736 ,  0.7339205 ,
         0.60609949],
       [ 0.55320512,  0.12962241,  0.84443947,  0.81012583,  0.22057856,
         0.33495709],
       [ 1.        ,  2.        ,  3.        ,  4.        ,  5.        ,
         6.        ]])

【讨论】:

  • 是的,我已经尝试过了,它可以工作,但是这会在我的数据集中添加很多 [](方括号),我不需要这个。我希望你能明白我的问题是什么。 (我只需要一个二维数组,而不是用 [] 分隔行的 vstack)
  • 方括号实际上并不存在 - 它们只是以这种方式打印,因此您可以了解数据的结构。
  • 但在此之后我不能像这样索引我的数组:da[:'150'] IndexError: invalid slice Before vstack 我可以
  • 你试过 da[:150] - 即。没有单引号 - 这就是你的意思 - 二维数组的前 150 行?
  • 是的,我当然试过不带引号,但对我没有帮助。是的,我想选择二维数组的前 150 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 2013-07-30
  • 2021-07-29
  • 2016-03-13
  • 2021-11-02
  • 2013-10-14
  • 2021-05-27
相关资源
最近更新 更多