我有一个[1008961 rows x 8 columns]数据框,看起来像这样:
Position Price Side Size time init dt best_pricejump
0 1 3542 1 300 1495087206897454000 True 0.000 NaN
1 2 3541 1 484 1495087206906657000 True 9.203 NaN
2 3 3540 1 423 1495087206914836000 True 8.179 NaN
3 4 3539 1 599 1495087206922854000 True 8.018 NaN
4 5 3539 1 599 1495087206930944000 True 8.018 NaN
以及一个包含我正在查看的某些片段的列表:
[slice(0, 5, None), slice(9, 35, None), slice(39, 131, None), slice(135, 141, None),...]
如何有效地“sandwhich”列时间的值,以便切片数据帧的每个时间值都与切片的最后一个值相似?你知道吗
上面的例子是:
Position Price Side Size time init dt best_pricejump
0 1 3542 1 300 1495087206930944000 True 0.000 NaN
1 2 3541 1 484 1495087206930944000 True 9.203 NaN
2 3 3540 1 423 1495087206930944000 True 8.179 NaN
3 4 3539 1 599 1495087206930944000 True 8.018 NaN
4 5 3539 1 599 1495087206930944000 True 8.018 NaN
我有一个解决方案,但它非常慢(它需要14分钟)。有没有更快的方法?你知道吗
for slc in list_of_slices:
df["time"][slc] = (df["time"][slc]).iloc[-1]
可以尝试连接操作而不是循环。虽然我个人不知道如何跳出一个初始循环,但我首先在切片器中循环,并为每个切片器范围分配一个组。然后得到一个只包含起始时间组的数据帧。然后重新加入。我不确定这是否更快。它取决于在每个循环中切片所需的时间,而不是赋值。也许你可以试试看,让我知道这样或那样?你知道吗
您可以使用
iloc
和iat
尝试按位置获取标量:相关问题 更多 >
编程相关推荐