Im使用一个csv文件,该文件在一列上有圈数,其中每一行包含关于该圈数的数据(最后一个数字是圈数),如下所示: 价值1,价值2,价值1 价值3、价值4、价值1 ... valueN,valuex,99
我有这个数据的一个子集,所以我有一个从lapX到lapY的范围,我想重新排列它,其中lapX是1,每次出现一个新圈时,将1添加到实际圈数。我编写的代码实现了我的目标:
csv = csv file readed as dataframe
lap = 1
lap_file = csv['Trial'][0]
while i < len(csv):
if csv['Lap'][i] == lap_file:
csv['Lap'][i] = lap
i += 1
else:
lap_file = csv['Lap'][i]
lap = lap + 1
csv['Lap'][i] = lap
i += 1
代码做了我所需要的,但它需要很多时间,我想是因为它在每一行上迭代,而且文件有点大。那么,我想知道,有没有其他方法可以做到这一点
编辑:我的df示例
我所拥有的:
比赛1:
我想要的是,以更快的方式:
比赛1:
这是一个参考,有更多的行,我有多个比赛,所以我可以有一个比赛2,其中每圈的数据数量是不同的
基于预期的数据帧,看起来您只想递增地重新计算圈数,即使它们不是连续圈数。所以5,6,9变成了1,2,3
为此,获取} 来压缩它,它只是计数。从中创建一个字典,然后将旧搭接值映射到新搭接值:
Lap
的唯一值并对其进行排序。然后用一个^{输出:
shift()
生成lap更改时的二进制序列cumsum()
此序列(True等于1,False等于0)相关问题 更多 >
编程相关推荐