将 NaN 替换为基于另一列的条件

问题描述 投票:0回答:0

我有以下带有 NaN 的数据集:

County                                                 0
City                                                   0
State                                                  0
Postal Code                                            0
Model Year                                             0
Make                                                   0
Model                                                286
Electric Vehicle Type                                  0
Clean Alternative Fuel Vehicle (CAFV) Eligibility      0
Electric Range                                         0
Base MSRP                                              0
Legislative District                                 312
DOL Vehicle ID                                         0
Vehicle Location                                       0
Electric Utility                                       0
2020 Census Tract                                      0
dtype: int64

如图所示,有 286 个缺失的模型和 312 个缺失的立法区。

对于模型,我已经确定了具有缺失值的品牌(计数 = 21)。在下面的数组中找到:

array(['KIA', 'VOLVO', 'NISSAN', 'BMW', 'TESLA', 'HONDA', 'CHEVROLET',
       'TOYOTA', 'FORD', 'VOLKSWAGEN', 'JEEP', 'HYUNDAI', 'LAND ROVER',
       'AUDI', 'CHRYSLER', 'POLESTAR', 'SUBARU', 'CADILLAC', 'MITSUBISHI',
       'FISKER', 'RIVIAN'], dtype=object)

我想做的,是根据模型的品牌来填充缺失模型的 NaN。

Ex.Model (Mode) = EV6 WHEN Make = KIA 

我还检索了品牌和型号列表,其中模型列显示模式:

          df1 = (df.groupby('Make')['Model']
               .apply(lambda x: x.mode().iat[0])
               .reset_index())
    Make    Model
0   AUDI    E-TRON
1   AZURE DYNAMICS  TRANSIT CONNECT ELECTRIC
2   BENTLEY     BENTAYGA
3   BMW     X5
4   CADILLAC    ELR
5   CHEVROLET   BOLT EV
6   CHRYSLER    PACIFICA
7   FIAT    500
8   FISKER  KARMA
9   FORD    MUSTANG MACH-E
10  GENESIS     GV60
11  HONDA   CLARITY
12  HYUNDAI     IONIQ 5
13  JAGUAR  I-PACE
14  JEEP    WRANGLER
15  KIA     NIRO
16  LAND ROVER  RANGE ROVER SPORT
17  LEXUS   NX
18  LINCOLN     AVIATOR
19  LUCID   AIR
20  MAZDA   CX-90
21  MERCEDES-BENZ   GLC-CLASS
22  MINI    HARDTOP
23  MITSUBISHI  OUTLANDER
24  NISSAN  LEAF
25  POLESTAR    PS2
26  PORSCHE     TAYCAN
27  RIVIAN  R1T
28  SMART   FORTWO ELECTRIC DRIVE
29  SUBARU  SOLTERRA
30  TESLA   MODEL 3
31  TH!NK   CITY
32  TOYOTA  PRIUS PRIME
33  VOLKSWAGEN  ID.4
34  VOLVO   XC90
35  WHEEGO ELECTRIC CARS    WHEEGO

我该怎么办:

A) 将 NaN 替换为基于其品牌的模型模式(列表)? B) 简化一个条目中的众数计算、列表和 NaN 替换,而不是分割我的工作(如果有的话)?

非常感谢,任何意见都会很有价值。

使用以下方式生成品牌和型号(模式)列表:

            df1 = (df.groupby('Make')['Model']
               .apply(lambda x: x.mode().iat[0])
               .reset_index())

期望根据其品牌将 NaN 替换为模型模式。

python pandas list replace mode
© www.soinside.com 2019 - 2024. All rights reserved.