pandas - Pandas:如何获得每组中的前 2 行、中 2 行和后 2 行
问题描述
假设我有一个数据框 df ,如下所示。为了在我使用的每组中获得第一个 2 和最后 2 个groupby.nth
df = pd.DataFrame({'A': ['a','a','a','a','a','a','a','a','b','b','b','b','b','b','b'],
'B': [1, 2, 3, 4, 5,6,7,8,1, 2, 3, 4, 5,6,7]}, columns=['A', 'B'])
df.groupby('A').nth([0,1,-2,-1])
结果:
B
A
a 1
a 2
a 7
a 8
b 1
b 2
b 6
b 7
我不确定如何获得中间的 2 行。例如,在 group'A'
中有 8 个实例,所以我的中间是4, 5
(n/2, n/2+1)
,而'B'
我的中间行是3, 4
(n/2-0.5, n/2+0.5)
. 任何指导表示赞赏。
解决方案
您可以使用iloc
查找每个组的n//2 -1
和n//2
索引(//
是楼层划分):
g = df.groupby('A')
g.apply(lambda x: x['B'].iloc[[len(x)//2-1, len(x)//2]])
A
a 3 4
4 5
b 10 3
11 4
Name: B, dtype: int64
推荐阅读
- php - 显示 JSON 数据但未绘制表格(使用 Datables - 服务器端处理)
- javascript - 在 javascript 中拖放克隆
- c - 为什么循环迭代 6 次但条件给出 5 次
- python-3.x - 尝试运行代码分析参考列表以供阅读时出现问题
- javascript - TypeError: "exports" 是只读的 => 导出模块时调用另一个方法的方法
- javascript - 带有 Nodemailer 的 HTML2PDF
- java - UTF-8 字符 html 内容字符串到 pdf
- google-apps-script - 我可以使用谷歌应用脚本来开发谷歌浏览器扩展吗
- asp.net-mvc - 任何 .net 应用程序的 IIS 应用程序池崩溃 - PipelineModuleStepContainer 中的 NullReferenceException
- c++-cli - 如何在datagridview中合并单元格,然后将组合框添加到单元格被合并?