python - 填写熊猫数据框中的“缺失”值
问题描述
我是 Python 新手,不知道如何解决这个问题。也许有人可以帮助我解决问题。
对于 cloumn 中的每个值,x
我希望在 column 中有 1-400 的数字y
。列x
应保持不变(400 次)。在我的数据框中,几乎就是这种情况,但是这个范围内的一些值是随机缺失的,应该添加。每隔一列必须为 0。
这是我的df:
x y value
0 20 1 8.046723
1 20 2 4.613252
2 20 3 14.546438
3 20 4 0.000000
4 20 8 2.285226
... ... ... ...
2987 29 394 0.000000
2988 29 396 0.000000
2989 29 397 0.000000
2990 29 398 0.000000
2991 29 400 0.000000
之后它应该看起来像:
x y value
0 20 1 8.046723
1 20 2 4.613252
2 20 3 14.546438
3 20 4 0.000000
4 20 5 0.000000
5 20 6 0.000000
6 20 7 0.000000
7 20 8 2.285226
... ... ... ...
3194 29 394 0.000000
3195 29 395 0.000000
3196 29 396 0.000000
3197 29 397 0.000000
3198 29 398 0.000000
3199 29 399 0.000000
3200 29 400 0.000000
解决方案
让我们将数据框的索引设置为列x
,y
然后用于pd.MultiIndex.from_product
创建一个新索引,其中对于 中的每个唯一值x
,y
包含所有必需的值,最后reindex
是这个新创建的索引上的数据框:
out = df.set_index(['x', 'y'])
idx = pd.MultiIndex.from_product([s.index.levels[0], range(1, 401)], names=['x', 'y'])
out = out.reindex(idx, fill_value=0).reset_index()
>>> out
x y value
0 20 1 8.046723
1 20 2 4.613252
2 20 3 14.546438
3 20 4 0.000000
4 20 5 0.000000
5 20 6 0.000000
6 20 7 0.000000
7 20 8 2.285226
8 20 9 0.000000
... ... ... ...
794 29 395 0.000000
795 29 396 0.000000
796 29 397 0.000000
797 29 398 0.000000
798 29 399 0.000000
799 29 400 0.000000
推荐阅读
- python - 急切执行 tf.dataset 实例
- javascript - Sinon 存根方法 withArgs 匹配特定对象键
- selenium - 登录主页加载然后刷新后由于刷新无法识别定位器
- python - TracerWarning:将张量转换为 Python 索引可能会导致跟踪不正确
- selenium - 在 docker compose 文件中使用多个 VNC 端口进行 Selenium 节点 chrome 调试
- c# - 从 C# 中的 SortedSet 中删除元素
- css - 在悬停时使用过渡时如何使元素保持原位
- vue.js - pouchdb + vuex 实时更新
- c# - 通过浏览器回击(按钮)时,临时数据没有变空(null)
- handlebars.js - 嵌套车把部分