首页 > 解决方案 > 如何使用 Pandas 在数据框中生成缺失的增量行值?

问题描述

我有一个包含两列的数据框,经过的秒数和一个值。在经过的秒数行中,数据帧有时会跳过一秒(数据丢失)。我想填写缺失的秒数并内插缺失的值。

到目前为止,我尝试的是对数据帧进行第一次和最后一次测量,并排列一个包含从开始到结束传递的所有秒数的 Numpy 数组,将其转换为与第一个匹配的数据帧并尝试加入或合并它们。

原始 df 如下所示:

   seconds   value
0     1        5.560000
1     3        5.590000
2     4        5.620000
3     5        5.646667
4     7        5.653333
5     9        5.760000

然后我创建另一个数据框 df2:

   seconds   value
0     1        NaN
1     2        NaN
2     3        NaN
3     4        NaN
4     5        NaN
5     6        NaN
6     7        NaN
7     8        NaN
8     9        NaN

我尝试将它们合并在一起,就像这样

df = df.merge(df2, how='left')

我期望的输出是

   seconds   value
0     1        5.560000
1     2        NaN
2     3        5.590000
3     4        5.620000
4     5        5.646667
5     6        NaN
6     7        5.653333
7     8        NaN
8     9        5.760000

但实际输出是 df 或 df2,未合并。有没有办法达到预期的结果,我是在正确的轨道上还是可以更容易地做到这一点?

标签: python-3.xpandas

解决方案


你不需要第二个df,使用df.reindex()

df=df.set_index('seconds')
df=df.reindex(range(df.index.min(),df.index.max()+1)).reset_index()

如果需要使用第二个 df,您可以使用:

df=df.set_index('seconds').combine_first(df2.set_index('seconds')).reset_index()

   seconds     value
0        1  5.560000
1        2       NaN
2        3  5.590000
3        4  5.620000
4        5  5.646667
5        6       NaN
6        7  5.653333
7        8       NaN
8        9  5.760000

推荐阅读