pandas - 在熊猫中将一列按另一列分组?
问题描述
我想获得一列的中值并使用另一列的关联值。例如,
col1 col2 index
0 1 3 A
1 2 4 A
2 3 5 A
3 4 6 B
4 5 7 B
5 6 8 B
6 7 9 B
我按索引分组得到col 1的中值,并使用col 2的关联值得到
col1 col2 index
2 4 A
5 7 B
我不能使用索引 B 的实际中值,因为它将平均两个中间值,并且该值在 col 2 中没有相应的值。最好的方法是什么?groupby 方法会起作用吗?或者以某种方式使用排序?我需要定义自己的功能吗?
解决方案
似乎你需要采取中间位置而不是median
来自原始 df
df.groupby('index')[['col1','col2']].apply(lambda x : pd.Series(sorted(x.values.tolist())[len(x)//2]))
Out[297]:
0 1
index
A 2 4
B 6 8
推荐阅读
- android - Android Hilt - 如何注入 viewModelScope
- elasticsearch - 如何对 Elasticsearch 列表中的所有元素应用布尔查询?
- android - 我正在尝试从 android 移动内存中读取 pdf 文件,但它显示“加载 pdf 错误”
- ms-access - 通过从 Access 直接导出到 SharePoint 创建列表时,无法将 SharePoint 列表添加到团队选项卡
- sql - SQL 版本的 write for spark
- java - Maven 用 lombok 项目编译
- firefox - Firefox 60.9 未加载 es2015 模块(Angular 8)
- java - 如何使用 junit5 覆盖 taskExecutor.execute(new Runnable..) 中编写的代码
- python - JSON 与 Python:jsonschema 没有预期的验证错误
- multithreading - 当 Spring @Async 线程永远不会完成时会发生什么?