如何解决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())
编辑:
如果您决定使用 .interpolate() - 那么
需要按来源和类型对其进行分组:
您可以使用 groupBy() - 按来源和类型分组的方法:
df.groupby(['Source','Type'])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。