python - 如果另一个数组不继续,则通过重复值扩展数组

标签 python arrays pandas sorting numpy

我正在使用 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/

相关文章:

python - SQLAlchemy 使用连接检查约束

python - 具有选择条件的 Pandas 数据框中的有效最大选择

python - 如何在数据框中应用第 5 列的 cummax 逻辑

python - 如何使用 pandas.Series.str.contains 为包含给定条件的行返回真值

python - 如何获取 facebook-sdk 的 oauth_access_token

python - pygame事件在几秒钟的延迟后响应

JavaScript 从对象数组中获取不在另一个对象数组中的元素

javascript - 通过几个分隔符将字符串拆分为数组

javascript - 将三个数组合并成一个字符串

Python:将字典与列表中的列表合并为值并对它们进行计数