gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:07:07 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框。我试图根据Section列中相应级别的平均价格来填充Price列的nans。执行此操作的有效且优雅的方法是什么?我的数据看起来像这样

Name   Sex  Section  Price
Joe M 1 2
Bob M 1 nan
Nancy F 2 5
Grace F 1 6
Jen F 2 3
Paul M 2 nan

最佳答案

您可以结合使用 groupbytransformmean。请注意,我已经修改了您的示例,因为否则两个部分的平均值相同。从

开始
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

这是可行的,因为我们可以按部分计算平均值:

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

关于python - 根据另一列的平均值填充一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880179/

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