python-3.x - 如何使用 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,未合并。有没有办法达到预期的结果,我是在正确的轨道上还是可以更容易地做到这一点?
解决方案
你不需要第二个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
推荐阅读
- wpf - 如何将硬编码文本与标签中的绑定文本连接起来?
- intellij-idea - IntelliJ:依赖模块的未解析函数
- sql - 如何将几行聚合为一行?
- android - Android - Firebase FCM 和 Android Studio 模拟器,间歇性行为
- firefox - Firefox getUserMedia 为视频约束 480 X 720 抛出 OverconstrainedError
- python - 如何根据列名将多个 csv 文件连接为一个,而无需在代码中键入每个列标题
- oracle - Oracle 将列类型从 DATE 更改为 VARCHCAR2
- c# - UI 抑制 - 客户端卡在 SigningIn 状态
- mysql - 多行到一个唯一的逗号分隔值
- erlang - 无法在 Ejabberd 中更改 XMPP MUC 描述