这是我的数据帧片段:
Title | Age
------+--------
Mr. | 30
Mr. | NaN
Mr. | 32
Mrs. | 28
Mrs. | 16
Mr. | 34
Mrs. | NaN
编辑:我添加了最后一行,以澄清问题
我想插补NaNs(第二行和最后一行),对于第二行,它应该使用数据帧中另一个“Mr.”的平均值,所以在这个例子中,应该是32,在最后一行应该使用另一个“Mrs.”的平均值,所以应该是22
计算平均数很容易
^{pr2}$所以我写了一个叫做agefun的函数:
def agefun(df, t):
return df.loc[df["Title"] == t]["Age"].mean()
它是有效的,现在,我如何将这个函数与fillna()函数一起使用呢?我想要一些像:
df['Age'].fillna(agefun(df, this_row_title))
但它当然不起作用,我不知道如何告诉函数我喜欢与特定行中标题对应的值。在
如何执行?在
您也可以这样做:
^{1}$
^{pr2}$df
输出:Transform与数据帧中的原始序列保持相同的形状。在
^{1}$在上面的例子中,它保持所有值不变,除了第二行的一个
NaN
值,它通过计算组的平均值来填充第二行,即Title
是Mr.
的所有行的平均值。在相关问题 更多 >
编程相关推荐