python - Pandas - 查找 2 个相关属性的最大计数并用该值替换重复行
问题描述
我在熊猫工作,我有一个看起来像这样的数据集/数据框。
venueId venueCategoryId venueCategory
v1 vc1 Airport
v1 vc2 Park
v1 vc1 Airport
v2 vc3 American Restaurant
v3 vc4 Italian Restaurant
v3 vc5 Restaurant
场地Id 代表独特的场地,类别代表场地的类型。CategoryId 和 CategoryName 值是相关的。
我正在尝试用该场地中最高的类别替换场地的场地类别 ID 和场地类别。
我试图得到的结果:
venueId venueCategoryId venueCategory
v1 vc1 Airport
v2 vc3 American Restaurant
v3 vc4 Italian Restaurant
我试图在“venueId”列上使用 groupby 来分组并找到计数并替换为最高计数。但我不知道如何将 placeCategoryId 和 placeCategory 作为 pandas 中的依赖列并找到最多 2 列并替换它们。
解决方案
这是通过pd.Series.mode
. 可能有一种更 Pandorable 的方法。
# combine id and category series
df['venueIdCat'] = list(zip(df.venueCategoryId, df.venueCategory))
# groupby venueId and extract mode
res = df.groupby('venueId')['venueIdCat'].apply(pd.Series.mode).reset_index()
# unsplit id and category
res = res.join(pd.DataFrame(res['venueIdCat'].values.tolist(),
columns=['venueCategoryId', 'venueCategory']))
# select required columns
res = res[['venueId', 'venueCategoryId', 'venueCategory']]
print(res)
venueId venueCategoryId venueCategory
0 v1 vc1 Airport
1 v2 vc3 AmericanRestaurant
2 v3 vc4 ItalianRestaurant
使用替代解决方案collections.Counter
:
from collections import Counter
# combine id and category series
df['venueIdCat'] = list(zip(df.venueCategoryId, df.venueCategory))
# groupby venueId and extract mode
res = df.groupby('venueId')['venueIdCat'].apply(lambda x: Counter(x).most_common()[0][0]).reset_index()
# unsplit id and category
res = res.join(pd.DataFrame(res['venueIdCat'].values.tolist(),
columns=['venueCategoryId', 'venueCategory']))
# select required columns
res = res[['venueId', 'venueCategoryId', 'venueCategory']]
print(res)
venueId venueCategoryId venueCategory
0 v1 vc1 Airport
1 v2 vc3 AmericanRestaurant
2 v3 vc4 ItalianRestaurant
推荐阅读
- javascript - 使用 HighCharts 动态更新同一图表上的两个系列
- javascript - 使用 BehaviorSubject 重新加载刷新期间的角度视图组件数据丢失
- r - 使用 usmap 功能去除县界
- html - 中心牌但有左对齐?
- jqgrid - jqGrid,为动态下拉内联编辑设置初始值
- c# - 无法加载类型“IdentityModel.Client.DiscoveryClient”
- javascript - ReactJS 组件不显示
- android - 如何更改和保存切换首选项摘要
- java - 如何将 Spring Cloud Stream 功能 Bean 连接到 Kafka Binder?
- bash - 如何在 Github 工作流程中逃避多行秘密?