繁体   English   中英

填写 pandas dataframe 中的“缺失”值

[英]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 的索引设置为xy列,然后使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM