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