python - Python pandas - 为另一列中的每个不同值显示列中记录数最多的值
问题描述
我有一个与此类似的表,但大约有 60,000 行,其中每个数字都是字符串的代码。我需要为 2 种最流行的车辆类型获取最流行的颜色。
data = pd.DataFrame({'Vehicle_type':[1 ,5 ,2 ,5 ,5 ,3 ,5 ,2 ,3 ,1 ,4 ,5 ,4 ,3 ,4 ,1 ,2 ,1],
'Color': [10,11,10,10,11,14,11,10,13,12,14,15,12,13,14,12,11,14]})
为了找到两种最受欢迎的车辆类型,我使用了这个:
data['Vehicle_type'].value_counts().head(2)
输出是:
5 5
1 4
Name: Vehicle_type, dtype: int64
要从该数据框中获取我使用的两种最受欢迎的车辆类型的所有颜色:
newdata = data['Vehicle_type'].apply(lambda x: x == 5 or x==1)
data[newdata]
输出:
Vehicle_type Color
1 10
5 11
5 10
5 11
5 11
1 12
5 15
1 12
1 14
我被困在这里。我用 .groupby() 尝试了不同的方法,但我做不到。我想要的输出应该是这样的:
Vehicle_type Color
5 11
1 12
谢谢你。
解决方案
这可能不是最优雅的解决方案,但它确实有效。
获取数据后,您可以添加一个始终为 1 的计数列,然后将其相加以获得每个计数:
data['count'] = 1
data = data.groupby(['Vehicle_type','Color']).sum()
这将为您提供一个数据框,其中包含所有车辆类型/颜色组合以及它们在计数列中的计数。
如果要导出数据,我通常会调用data.reset_index()
以将所有内容显示得更整洁一些。
编辑:重新阅读您的问题并意识到您还要求最大值。调用reset_index()
然后data[data['count'] == data['count'].max()]
获取计数最多的车辆类型/颜色。
推荐阅读
- spring - MongoDB:获取具有嵌套数组元素匹配的内部数组对象的计数
- dataframe - 如何在 PySpark 中检查 df1 是否等于 df2?
- python - Passing large time dependent data to solve differential equation in python,
- python - 如何在一个文件夹中依次运行多个python文件以及如何生成单个html报告?
- pandas - 在数据框中获取具有相同 ID 的多行中的值
- html - 为什么这个导航栏会出现这个样子?
- python-3.x - 如何在scrapy中将allowed_domains与start_urls相关联
- javascript - UI5:如何在其他视图中重用格式化程序?
- python - 单独解决后再安装Conda环境
- api - MS Graph API 调用的数量是否有限制?