python - Python Pandas:根据类别的最高频率更改值
问题描述
我在正在探索的数据集中发现了一个分类错误。
数据框如下所示:
df1 = pd.DataFrame({
'product': ['ABRICOTS', 'ABRICOTS', 'ABRICOTS', 'ABRICOTS', 'AILS','AILS', 'ANANAS', 'ANANAS', 'ANANAS','ANANAS','ANANAS','ANANAS','ANANAS'],
'family': ['Fruit','Fruit','Fruit', 'Vegetable', 'Vegetable','Vegetable', 'Fruit', 'Fruit','Fruit','Fruit','Cereal','Cereal','Animal Product']
})
每个产品应该只属于 1 个家庭类别,但使用下面的公式显示我有不同类别的产品:
df1.groupby(['product','family']).size().rename('Freq').reset_index()
现在我想做的是使用一个公式将每个产品的频率数最低的系列更改为我原始数据框中频率数最高的系列。预期结果如下所示:
解决方案
希望这可以帮助,
df1 = pd.DataFrame({
'product': ['ABRICOTS', 'ABRICOTS', 'ABRICOTS', 'ABRICOTS', 'AILS','AILS', 'ANANAS', 'ANANAS', 'ANANAS','ANANAS','ANANAS','ANANAS','ANANAS'],
'family': ['Fruit','Fruit','Fruit', 'Vegetable', 'Vegetable','Vegetable', 'Fruit', 'Fruit','Fruit','Fruit','Cereal','Cereal','Animal Product']
})
排序并删除行。
d=df1.groupby(['product','family']).size().rename('Freq').reset_index().\
sort_values(['product','Freq'],ascending=False).\
drop_duplicates('product')[['product','family']]\
.set_index('product')['family'].to_dict()
使用地图功能
df1['family'] = df1['product'].map(d)
谢谢。
推荐阅读
- javascript - 加载图像标签的href时触发加载事件
- ios - 当您离开视图时如何在 Swift 中停用 AVPlayer
- keyboard - 有没有办法在基于 DOS 的程序中读取键盘修改键,例如 ALT 或 CTRL?
- c++ - 为什么不显示 sfml 图像?
- ansible - 如何调试 Ansible when_failed 子句
- angularjs - 为什么 CropperJS 库的角度太慢了?
- sql-server - 如何使用 sql 查询从 sql 数据表中获取摘要
- latex - 如何让两个 minipage 环境在同一行上打印?
- java - Maven:使用 MOJO 时出现问题
- c# - Time.DeltaTime 在 Unity 中突然停止工作