Pandas 根据其他列标准插入缺失值

问题描述

我有当前的数据框:

日期 来源 类型 访问 销售
01/01/2020 来源 1 类型 1 100 10
01/01/2020 来源 2 类型 1 150 5
02/01/2020 来源 1 类型 1 NaN NaN
02/01/2020 来源 2 类型 1 125 15
03/01/2020 来源 1 Type2 150 18
03/01/2020 来源 2 Type2 NaN NaN
04/01/2020 来源 1 Type2 150 25
04/01/2020 来源 2 Type2 120 05

我想做的是一个简单的 .interpolate() 缺失数据,但是我需要按来源和类型对它进行分组以保持数据尽可能准确,而不是基于上面和下面的行哪些不相关。

我已经到了这个阶段:

df_fixed = df[['Source','Type','Visits','Sales']].loc[(df['Source'] == 'Source1') & (df['Type'] == 'Type1')].interpolate()

这是第一步,但不能更进一步,感觉有更简单的方法

完成此任务最优雅的方式是什么?

解决方法

一个想法是改变 NAN - 中位数或平均值。

df['visits'].fillna(df['visits'].median(),inplace=True)
df.fillna(df.mean())

enter image description here


编辑:

如果您决定使用 .interpolate() - 那么

需要按来源和类型对其进行分组:

您可以使用 groupBy() - 按来源和类型分组的方法:

df.groupby(['Source','Type'])