首页 > 解决方案 > 用相似的列值Python填充数据框中的缺失值

问题描述

我有一个数据框,其中一些值分布不均匀 - 有些缺失,有些没有缺失。

数据如下所示:

Utility    Location     ID       Name        Unit1      Mover1      Unit2    Mover2

500        Municipal    75       Glover      1A         GT                      
500        Municipal    75       Glover      2A         GT               
500                     75       Glover      3A         GT               
500        Municipal    75       Glover                             1A       GT           
500                     75       Glover                             2A       GT
500                     75       Glover                             3A       GT
.
.
51        Provincial    85       Toshi       1          CT          1B       CT           
51        Provincial    85       Toshi       2          CT          2B       CT
51        Provincial    85       Toshi       5          ST          5B1      ST

我想在Unit1 = Unit2何时何地填充和合并数据框,Mover1 = Mover2但只保留已经匹配的部分 -Toshi值。第二个需要是让Location值填充与, 和- 相似的值Name,如果其中任何一个匹配,则应使用之前使用的值填充。IDUtilityLocation

输出如下所示:

Utility    Location     ID       Name        Unit1      Mover1      Unit2    Mover2

500        Municipal    75       Glover      1A         GT          1A       GT                  
500        Municipal    75       Glover      2A         GT          2A       GT         
500        Municipal    75       Glover      3A         GT          3A       GT                       
.
.
51        Provincial    85       Toshi       1          CT          1B       CT           
51        Provincial    85       Toshi       2          CT          2B       CT              
51        Provincial    85       Toshi       5          ST          5B1      ST

有没有一种简单的方法可以像上面一样压缩这个数据框?

标签: pythonpython-3.xpandasdataframereplace

解决方案


我只能想出这个慢的解决方案(Two applys must be slow),高性能请查看 Python:Justifying NumPy array

df.groupby(['Utility','ID','Name']).apply(lambda x : x.apply(lambda y : sorted(y,key=pd.isna))).dropna()
Out[51]: 
   Utility    Location  ID    Name Unit1 Mover1 Unit2 Mover2
0      500   Municipal  75  Glover    1A     GT    1A     GT
1      500   Municipal  75  Glover    2A     GT    2A     GT
2      500   Municipal  75  Glover    3A     GT    3A     GT
6       51  Provincial  85   Toshi     1     CT    1B     CT
7       51  Provincial  85   Toshi     2     CT    2B     CT
8       51  Provincial  85   Toshi     5     ST   5B1      S

推荐阅读