gpt4 book ai didi

python - 重新标记 pandas 中的级别

转载 作者:行者123 更新时间:2023-11-30 23:09:34 24 4
gpt4 key购买 nike

在 pandas DataFrame 中,我试图用一个名称重新标记变量的两个级别,但保持变量中的“Nan”值不变。

下面是使用“mtcars”数据集的修改版本的可重现示例。例如,在这里我想将“am”变量的"is"和“否”级别重新标记为"new"。

                    mpg   cyl  disp  hp drat    wt  qsec vs  am  
Mazda RX4 21.0 six 160.0 110 3.90 2.620 16.46 0 yes
Mazda RX4 Wag 21.0 two 160.0 110 3.90 2.875 17.02 0 NaN
Datsun 710 22.8 six 108.0 93 3.85 2.320 18.61 1 no
Hornet 4 Drive 21.4 two 258.0 110 3.08 3.215 19.44 1 NaN
Hornet Sportabout 18.7 six 360.0 175 3.15 3.440 17.02 0 yes
Valiant 18.1 two 225.0 105 2.76 3.460 20.22 1 NaN
Duster 360 14.3 two 360.0 245 3.21 3.570 15.84 0 no

结果将如下所示:

                    mpg   cyl  disp  hp drat    wt  qsec vs  am  
Mazda RX4 21.0 six 160.0 110 3.90 2.620 16.46 0 new
Mazda RX4 Wag 21.0 two 160.0 110 3.90 2.875 17.02 0 NaN
Datsun 710 22.8 six 108.0 93 3.85 2.320 18.61 1 new
Hornet 4 Drive 21.4 two 258.0 110 3.08 3.215 19.44 1 NaN
Hornet Sportabout 18.7 six 360.0 175 3.15 3.440 17.02 0 new
Valiant 18.1 two 225.0 105 2.76 3.460 20.22 1 NaN
Duster 360 14.3 two 360.0 245 3.21 3.570 15.84 0 new

最佳答案

这里有两种方法,第一个是假设非 NaN 值应使用 notnull 设置为"new" :

In [21]:
df.loc[df['am'].notnull(),'am'] = 'new'
df

Out[21]:
mpg cyl disp hp drat wt qsec vs am
Mazda RX4 21.0 six 160 110 3.90 2.620 16.46 0 new
Mazda RX4 Wag 21.0 two 160 110 3.90 2.875 17.02 0 NaN
Datsun 710 22.8 six 108 93 3.85 2.320 18.61 1 new
Hornet 4 Drive 21.4 two 258 110 3.08 3.215 19.44 1 NaN
Hornet Sportabout 18.7 six 360 175 3.15 3.440 17.02 0 new
Valiant 18.1 two 225 105 2.76 3.460 20.22 1 NaN
Duster 360 14.3 two 360 245 3.21 3.570 15.84 0 new

另一种方法是使用 isin 仅过滤那些将"is"或“否”设置为"new"的行。 :

In [23]:
df.loc[df['am'].isin(['yes','no']),'am'] = 'new'
df

Out[23]:
mpg cyl disp hp drat wt qsec vs am
Mazda RX4 21.0 six 160 110 3.90 2.620 16.46 0 new
Mazda RX4 Wag 21.0 two 160 110 3.90 2.875 17.02 0 NaN
Datsun 710 22.8 six 108 93 3.85 2.320 18.61 1 new
Hornet 4 Drive 21.4 two 258 110 3.08 3.215 19.44 1 NaN
Hornet Sportabout 18.7 six 360 175 3.15 3.440 17.02 0 new
Valiant 18.1 two 225 105 2.76 3.460 20.22 1 NaN
Duster 360 14.3 two 360 245 3.21 3.570 15.84 0 new

关于python - 重新标记 pandas 中的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com