通过定界符有效分割熊猫DataFrame

时间:2020-06-06 04:57:08

标签: pandas

我有一个看起来像

的DataFrame
{
  "type": {
    "1590160049809": "boot",
    "1590160054895": "pick",
    "1590160057156": "pick",
    "1590160718705": "stop",
    "1590160772315": "boot",
    "1590160777015": "pick",
    "1590160785481": "pick"
  },
  "boot time": {
    "1590160049809": "1590160049.809339046",
    "1590160054895": null,
    "1590160057156": null,
    "1590160718705": null,
    "1590160772315": "1590160772.315527916",
    "1590160777015": null,
    "1590160785481": null
  },
  "capture time": {
    "1590160049809": null,
    "1590160054895": "1590160054.895216",
    "1590160057156": "1590160057.156712",
    "1590160718705": null,
    "1590160772315": null,
    "1590160777015": "1590160777.015709",
    "1590160785481": "1590160785.481504"
  },
  "end run time": {
    "1590160049809": null,
    "1590160054895": null,
    "1590160057156": null,
    "1590160718705": "1590160718.705250978",
    "1590160772315": null,
    "1590160777015": null,
    "1590160785481": null
  }
}

如果没有boot,则部分以end开头,也可以不以end结尾,那么我应该选择系列中的最后一个pick。 / p>

我想做的是计算每个部分的时间。所以类似totalTime = end.timestamp - boot.timestampend不在pick.timestamp - boot.timestamp

我在想什么

  1. 找到所有引导行
  2. 采用范围df[boot[n]:boot[n+1]]
  3. 从最后一个元素中选择第二个作为结束
  4. 计算
boots = df[df["type"] == "boot"]
for i, boot in enumerate(boots, start=1):
    section = df[boots.iloc[0].name:boots.iloc[1].name][:-1]
    print(section.iloc[-1].name - section.iloc[0].name)

这给了我想要的东西,但感觉就像我在做很多额外的工作。同样,将DataFrame拆分为boot, pick, ..., pick, [end]的块也很好,我只是很容易地在列上拆分而没有看到行。

有没有办法对熊猫做这种事?

0 个答案:

没有答案