gpt4 book ai didi

python - 用另一个数据框中同名列的平均值替换一个数据框中的零值列

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:43 27 4
gpt4 key购买 nike

我有两个数据框 df1 和 df2,每个数据框都有相同的列数和相同的列名,但行数不同。基本上,df2 中有许多列都具有 0 值。

我想要完成的是 df2 中所有值为零的列都被替换为相同列名的平均(平均)值(如 df1)。

因此,如果 df1 具有如下结构:-

Column1 Column2 ------    Column n
0.4 2.3 1.7
0.7 2.5 1.4
0.1 2.1 1.2

df2 的结构如下:-

Column1 Column2 ------    Column n
0 2.3 1.7
0 2.5 1.4
0 2.1 1.2

我想用 df1 中映射的同一列的平均值替换 column1(以及 df2 中的任何其他全零列)。所以,最后,df2 看起来像:-

Column1 Column2 ------    Column n
0.4 2.3 1.7
0.4 2.5 1.4
0.4 2.1 1.2

(df2 第 1 列中的所有零值替换为 df1 中第 1 列的平均值。

我对此相当陌生,已经检查了其他选项,例如 fillna() 和 replace(),但无法完全完成我想要的。非常感谢这方面的任何帮助。

最佳答案

使用DataFrame.mask意思:

df = df2.mask(df2 == 0, df1.mean(), axis=1)
print (df)
Column1 Column2 Column n
0 0.4 2.3 1.7
1 0.4 2.5 1.4
2 0.4 2.1 1.2

numpy 替代 numpy.where应该在大型 DataFrame 中工作得更快:

df = pd.DataFrame(np.where(df2 == 0, df1.mean(), df1), 
index=df1.index,
columns=df1.columns)
print (df)
Column1 Column2 Column n
0 0.4 2.3 1.7
1 0.4 2.5 1.4
2 0.4 2.1 1.2

关于python - 用另一个数据框中同名列的平均值替换一个数据框中的零值列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54924641/

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