Python 基于行类型的数据帧填充
我有一个像这样的数据帧。我需要根据动物类型用中值替换NaN。例如,我需要为猫计算一个中位数,然后用这个值仅用NaN替换猫。是否有一种方法可以在一个命令中完成此操作,或者我需要为每种类型手动完成此操作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
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