我正在使用 TrackPy 插件跟踪平面上的一些粒子。这会产生一个数据框,其中包含 x 和 y 中的位置以及相应的帧编号,这里用一个简单的列表来说明:
x=[80.1,80.2,80.1,80.2,80.3]
y=[40.1,40.2,40.1,40.2,40.3]
frame = [1,2,3,4,5]
但是,由于实验设置,可能会丢失单个帧的粒子,从而导致:
x=[80.1,80.2,80.1,80.2,80.3]
y=[40.1,40.2,40.1,40.2,40.3]
frame = [1,2,3,4,6]
现在我想扩展所有列表,以便“frame”继续,如果原始数据中不存在帧,“x,y”将重复先前的值,结果如下:
x=[80.1,80.2,80.1,80.2,80,2,80.3]
y=[40.1,40.2,40.1,40.2,40.2,40.3]
frame = [1,2,3,4,5,6]
最佳答案
您可以使用内部使用 NumPy 数组的 Pandas:
import pandas as pd
df = pd.DataFrame({'x': x, 'y': y}, index=frame)
df = df.reindex(np.arange(df.index.min(), df.index.max()+1)).ffill()
结果
print(df)
x y
1 80.1 40.1
2 80.2 40.2
3 80.1 40.1
4 80.2 40.2
5 80.2 40.2
6 80.3 40.3
然后您可以将结果提取到列表中:
x = df['x'].tolist()
y = df['y'].tolist()
frame = df.index.tolist()
关于python - 如果另一个数组不继续,则通过重复值扩展数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52057927/