Python 基于行类型的数据帧填充

Python 基于行类型的数据帧填充,python,pandas,data-science,Python,Pandas,Data Science,我有一个像这样的数据帧。我需要根据动物类型用中值替换NaN。例如,我需要为猫计算一个中位数,然后用这个值仅用NaN替换猫。是否有一种方法可以在一个命令中完成此操作,或者我需要为每种类型手动完成此操作 animal age weight priority a cat 2.5 1 yes b cat 1.0 3 yes c dog 0.5 6 no d dog NaN 8

我有一个像这样的数据帧。我需要根据动物类型用中值替换NaN。例如,我需要为猫计算一个中位数,然后用这个值仅用NaN替换猫。是否有一种方法可以在一个命令中完成此操作,或者我需要为每种类型手动完成此操作

  animal  age  weight priority
a    cat  2.5       1      yes
b    cat  1.0       3      yes
c    dog  0.5       6       no
d    dog  NaN       8      yes
e    cat  5.0       4       no
f    cat  2.0       3       no
g    dog  3.5      10       no
h    cat  NaN       2      yes
i    dog  7.0       7       no
j    dog  3.0       3       no
用于与原始数据帧大小相同的组的
中值
,因此可以用于替换
NaN
s:

df['age'] = df['age'].fillna(df.groupby('animal')['age'].transform('median'))
print (df)
  animal   age  weight priority
a    cat  2.50       1      yes
b    cat  1.00       3      yes
c    dog  0.50       6       no
d    dog  3.25       8      yes
e    cat  5.00       4       no
f    cat  2.00       3       no
g    dog  3.50      10       no
h    cat  2.25       2      yes
i    dog  7.00       7       no
j    dog  3.00       3       no
详细信息

print (df.groupby('animal')['age'].transform('median'))
a    2.25
b    2.25
c    3.25
d    3.25
e    2.25
f    2.25
g    3.25
h    2.25
i    3.25
j    3.25
Name: age, dtype: float64