为什么重复一个pd.series不能按预期工作?

时间:2019-04-23 09:40:08

标签: python pandas

我刚刚开始使用python 3.7,我正在尝试创建一个序列(例如从0到23)并重复它。使用

rep1 = pd.Series(range(24))

我想出了如何制作前24个值,所以我想多次“复制粘贴”它,以便最终系列是原始的5次,一次又一次。 rep = pd.Series.repeat(rep1, 5)的结果给我的结果看起来像这样,这不是我想要的

0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 ...

我要寻找的是0-23范围多次。有什么建议吗?

4 个答案:

答案 0 :(得分:3)

您可以尝试以下操作:

def find[Kind[_[_]], F[_]](c: blackbox.Context)(implicit kindTag: c.WeakTypeTag[Kind[F]], fTag: c.WeakTypeTag[F[_]]): c.Expr[Kind[F]] = {
  import c.universe._

  val self = c.eval(c.Expr[Delayed[Kind]](c.untypecheck(c.prefix.tree.duplicate)))
  val sourceFile = AbstractFile.getFile(self.sourceFilePath)
  val batchSourceFile = new BatchSourceFile(sourceFile, sourceFile.toCharArray)
  val implicitSearchPosition = new OffsetPosition(batchSourceFile, self.callSitePoint).asInstanceOf[c.Position]

  c.Expr[Kind[F]](c.inferImplicitValue(
    appliedType(kindTag.tpe.typeConstructor, fTag.tpe.typeConstructor),
    pos = implicitSearchPosition
  ))
}

这将重复您的系列5次。

答案 1 :(得分:2)

使用numpy.tile的另一种解决方案:

import numpy as np

rep = pd.Series(np.tile(rep1, 5))

答案 2 :(得分:0)

您可以使用列表直接生成您的系列。

rep = pd.Series(list(range(24))*5)

答案 3 :(得分:0)

如果要将重复的Series作为一个数据对象,请为此使用pandas DataFrame。 DataFrame是一个对象中的多个熊猫系列,共享一个索引。

所以首先我要创建一个0-23的python列表,共5次。

然后,我将其放入DataFrame中并可选地转置,以便在此示例中行向下而不是跨行。

import pandas as pd
lst = [list(range(0,24))] * 5
rep = pd.DataFrame(lst).transpose()

enter image description here