[英]Fill in the 'missing' values in a pandas dataframe
我是 Python 的新手,我不知道如何解决这个问题。 也许有人可以帮助我解决问题。
对于 cloumn x
中的每个值,我希望在y
列中有 1 - 400 的数字。 x
列应该保持不变(400 次)。 在我的 dataframe 中几乎就是这种情况,但是这个范围内的一些值是随机缺失的,应该添加。 每隔一列必须为 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
让我们将 dataframe 的索引设置为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.