gpt4 book ai didi

python - 我可以用分组数据框中列的模式替换 Nans 吗?

转载 作者:行者123 更新时间:2023-11-28 22:25:09 25 4
gpt4 key购买 nike

我有一些数据看起来像...

Year      Make   Model  Trim
2007 Acura TL Base
2010 Dodge Avenger SXT
2009 Dodge Caliber SXT
2008 Dodge Caliber SXT
2008 Dodge Avenger SXT

Trim 有一些缺失值。我想做的是类似以下的事情:

  • 按年份品牌和型号分组
  • 如果该组缺失值,则估算 Trim

例如,我会查看所有 2007 Acura TL。这可能看起来像

 Year      Make   Model Trim
2007 Acura TL Base
2007 Acura TL XLR
2007 Acura TL NaN
2007 Acura TL Base

然后,我会将 Nan 归因于 Base(因为 Base 是众数)。重要的是要记住,我想对每一组 Year、Make 和 Model 执行此操作。

最佳答案

使用模式

In [215]: df
Out[215]:
Year Make Model Trim
0 2007 Acura TL Base
1 2010 Dodge Avenger SXT
2 2009 Dodge Caliber NaN
3 2008 Dodge Caliber SXT
4 2008 Dodge Avenger SXT

In [216]: df.Trim.fillna(df.Trim.mode()[0])
Out[216]:
0 Base
1 SXT
2 SXT
3 SXT
4 SXT
Name: Trim, dtype: object

使用inplace=True来实际设置

In [217]: df.Trim.fillna(df.Trim.mode()[0], inplace=True)

In [218]: df
Out[218]:
Year Make Model Trim
0 2007 Acura TL Base
1 2010 Dodge Avenger SXT
2 2009 Dodge Caliber SXT
3 2008 Dodge Caliber SXT
4 2008 Dodge Avenger SXT

如果你在小组中工作

In [227]: df
Out[227]:
Year Make Model Trim
0 2007 Acura TL Base
1 2007 Acura TL XLR
2 2007 Acura TL NaN
3 2007 Acura TL Base

In [228]: (df.groupby(['Year', 'Make', 'Model'])['Trim']
.apply(lambda x: x.fillna(x.mode()[0])))
...:
Out[228]:
0 Base
1 XLR
2 Base
3 Base
Name: Trim, dtype: object

关于python - 我可以用分组数据框中列的模式替换 Nans 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45741879/

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