gpt4 book ai didi

python - .head() 和 .tail() 在 pandas GroupBy 对象上有负索引

转载 作者:太空狗 更新时间:2023-10-30 01:13:56 32 4
gpt4 key购买 nike

我在过滤 pandas.DataFrame 的每组 groupby 对象中除最后 1 个元素之外的所有元素时遇到问题:

x = pd.DataFrame([['a', 1], ['b', 1], ['a', 2], ['b', 2], ['a', 3], ['b', 3]], 
columns=['A', 'B'])
g = x.groupby('A')

如预期(根据 documentation )g.head(1) 返回

   A  B
0 a 1
1 b 1

g.head(-1) 返回空 DataFrame

根据 x.head(-1) 的行为,我希望它返回

   A  B
0 a 1
1 b 1
2 a 2
3 b 2

即删除每个组的最后一个元素,然后将其合并回数据框。如果这只是 pandas 中的错误,我将不胜感激任何提出替代方法的人。

最佳答案

正如所评论的那样,这些还没有(还)在 Pandas 中实现。但是,您可以使用 cumcount 有效地实现它们:

def negative_head(g, n):
return g._selected_obj[g.cumcount(ascending=False) >= n]

def negative_tail(g, n):
return g._selected_obj[g.cumcount() >= n]

In [11]: negative_head(g, 1) # instead of g.head(-1)
Out[11]:
B
0 1
1 1
2 2
3 2

关于python - .head() 和 .tail() 在 pandas GroupBy 对象上有负索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33783072/

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