gpt4 book ai didi

Pandas:如何获取每组中的前 2、中 2 和底 2 行

转载 作者:行者123 更新时间:2023-12-02 06:47:13 24 4
gpt4 key购买 nike

假设我有一个数据框 df,如下所示。为了获得每组中的第 1 个 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

我不知道如何获取中间两行。例如,在组 'A' 中有 8 个实例,所以我的中间位置是 4, 5 (n/2, n/2+1) 和组 'B' 我的中间行将是 3, 4 (n/2-0.5, n/2+0.5)。任何指导表示赞赏。

最佳答案

sacul's answer很好,这里我只是按照你自己的想法定义一个自定义函数

def middle(x):
if len(x) % 2 == 0:
return x.iloc[int(len(x) / 2) - 1:int(len(x) / 2) + 1]
else:
return x.iloc[int((len(x) / 2 - 0.5)) - 1:int(len(x) / 2 + 0.5)]

pd.concat([middle(y) for _ , y in df.groupby('A')])
Out[25]:
A B
3 a 4
4 a 5
10 b 3
11 b 4

关于Pandas:如何获取每组中的前 2、中 2 和底 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53312044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com