用相似的列值填充数据框中的缺失值

时间:2019-01-22 14:55:04

标签: python python-3.x pandas dataframe replace

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

数据如下:

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 = Unit2Mover1 = Mover2时填充和合并数据框,但要单独保留已经匹配的部分-Toshi值。第二个需求是让Location的值填充与NameIDUtility相似的值-如果其中任何一个匹配,则应填充{ {1}}以前使用过。

输出如下所示:

Location

是否有一种简便的方法来像上面那样压缩此数据框?

1 个答案:

答案 0 :(得分:0)

我只能提出这种缓慢的解决方案(两个apply必须缓慢),为了获得高性能,请检查 github project

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