我正在尝试将具有周期数据的大数据帧拆分成具有相等或接近相等的周期长度的较小数据帧. Array_split工作得很好,直到我的数据不允许相等的分割(500,000个循环工作正常,但不是1,190,508).我希望这些部分以1000个周期为增量(最后一帧除外).
这是场景:
d = {
'a': pd.Series(random(1190508)),
'b': pd.Series(random(1190508)),
'c': pd.Series(random(1190508)),
}
frame = pd.DataFrame(d)
cycles = 1000
sections = math.ceil(len(frame)/cycles)
split_frames = np.array_split(frame, sections)
文档显示array_split基本上可以分割偶数组,然后在最后创建较小的组,因为数据不能均匀分割.这就是我想要的,但是目前,如果我查看这个新的split_frames列表中每个帧的长度:
split_len = pd.DataFrame([len(a) for a in split_frame])
split_len.to_csv('lengths.csv')
前698帧的长度是1000个元素,但其余的(帧699到1190)长度为999个元素.
无论我通过什么数量的部分(舍入,偶数或其他),它似乎使这个随机发生的中断.
我很难理解为什么它不会创建相同的帧长度,除了文档中的最后一个:
>>> x = np.arange(8.0)
>>> np.array_split(x, 3)
[array([ 0., 1., 2.]), array([ 3., 4., 5.]), array([ 6., 7.])]
任何帮助表示赞赏,谢谢!
解决方法:
array_split不会生成许多相等的部分,也不会生成剩余的部分.如果将长度为l的数组拆分为n个部分,则会生成l%n个大小为l // n 1的部分,其余部分为l // n.有关详细信息,请参见the source. (这确实应该在文档中解释.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。