首页 > 解决方案 > 从数据框列值创建一个函数并插入另一列的空白元素

问题描述

我有一个数据框(df),它看起来像:

          FHE
0           1
1           1
2           1
3
4           1
5  0.77027027

我正在尝试创建一个名为 FHE_TO_USE 的新列,它复制 FHE 列并创建 FHE 列的平均值并用平均值填充任何空白。所以解决方案看起来像:

        FHE     FHE_TO_USE
0           1            1
1           1            1
2           1            1
3               0.95405405
4           1            1
5  0.77027027   0.77027027

我试过以下没有成功:

df["FHE"] = np.where(df["PATTERN"]=="FT",1,df["FHE"])

df["FHE"] = df["FHE"].convert_objects(convert_numeric=True)

df["FHE_TO_USE"] = np.where(df["FHE"]=="",statistics.mean(df["FHE"]),df["FHE"])

这也给了我一个未来的警告:

FutureWarning: convert_objects is deprecated.  To re-infer data dtypes for object columns, use Series.infer_objects()
For all other conversions use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.

创建均值的正确方法是什么?

标签: pythonpandas

解决方案


您可以使用以下功能fillna()

df['FHE'] = pd.to_numeric(df.FHE, errors='coerce')
df['FHE_TO_USE'] = df.FHE.fillna(df.FHE.mean())

结果:

       FHE  FHE_TO_USE
0  1.00000    1.000000
1  1.00000    1.000000
2  1.00000    1.000000
3      NaN    0.954054
4  1.00000    1.000000
5  0.77027    0.770270

推荐阅读