当前位置:  开发笔记 > 编程语言 > 正文

根据另一列的平均值填充列的值

如何解决《根据另一列的平均值填充列的值》经验,为你挑选了1个好方法。



1> DSM..:

你可以使用结合起来groupby,transformmean.请注意,我已经修改了您的示例,因为否则两个Sections具有相同的平均值.从...开始

In [21]: df
Out[21]: 
    Name Sex  Section  Price
0    Joe   M        1    2.0
1    Bob   M        1    NaN
2  Nancy   F        2    5.0
3  Grace   F        1    6.0
4    Jen   F        2   10.0
5   Paul   M        2    NaN

我们可以用

df["Price"] = (df["Price"].fillna(df.groupby("Section")["Price"].transform("mean"))

生产

In [23]: df
Out[23]: 
    Name Sex  Section  Price
0    Joe   M        1    2.0
1    Bob   M        1    4.0
2  Nancy   F        2    5.0
3  Grace   F        1    6.0
4    Jen   F        2   10.0
5   Paul   M        2    7.5

这是有效的,因为我们可以通过Section计算平均值:

In [29]: df.groupby("Section")["Price"].mean()
Out[29]: 
Section
1    4.0
2    7.5
Name: Price, dtype: float64

并将此广播回到一个完整的系列,我们可以使用transform以下方法传递给fillna()

In [30]: df.groupby("Section")["Price"].transform("mean")
Out[30]: 
0    4.0
1    4.0
2    7.5
3    4.0
4    7.5
5    7.5
Name: Price, dtype: float64

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有