Python 按某个值填充数据帧

Python 按某个值填充数据帧,python,pandas,numpy,dataframe,pandas-groupby,Python,Pandas,Numpy,Dataframe,Pandas Groupby,我有这些数据 import numpy as np import pandas as pd group = {'gender': ['male', 'female', 'female', 'male', 'female', 'male', 'male'], 'height': [175, 168, np.nan, 170, 167, np.nan, 190], } labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] df =

我有这些数据

import numpy as np
import pandas as pd
group = {'gender': ['male', 'female', 'female', 'male', 'female', 'male', 'male'],
        'height': [175, 168, np.nan, 170, 167, np.nan, 190],
        }
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
df = pd.DataFrame(group, index=labels)
df2 = df.groupby('gender')['height'].mean()

我想用df2的平均值来填充nan,你可以使用
groupby
+
transform
mean
。然后
用结果序列填充na

means = df.groupby('gender')['height'].transform('mean')
df['height'] = df['height'].fillna(means)

print(df)

   gender      height
a    male  175.000000
b  female  168.000000
c  female  167.500000
d    male  170.000000
e  female  167.000000
f    male  178.333333
g    male  190.000000
代码

输出

   gender      height
a    male  175.000000
b  female  168.000000
c  female  167.500000
d    male  170.000000
e  female  167.000000
f    male  178.333333
g    male  190.000000
   gender      height
a    male  175.000000
b  female  168.000000
c  female  167.500000
d    male  170.000000
e  female  167.000000
f    male  178.333333
g    male  190.000000