gpt4 book ai didi

python - 如何根据列中的 bool 值进行过滤并返回 groupby obj

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:50 25 4
gpt4 key购买 nike

我正在尝试返回一个 groupby 对象,该对象仅包含具有 3 个或更多条目的项目,用于我分组的字段。例如,如果我有以下对象并且我在 'Letters' 上分组:

Letters Numbers Items Bool
A 1 lamp 1
B 2 glass 1
B 2 table 1
C 5 pic 0
B 3 glass 0
C 4 bottle 1
C 2 horse 0

然后我的代码将只返回一个带 b 的 groupby 对象

我尝试了以下方法:

old_df = a_df.groupby('Letters')
new_df = old_df.filter(len(old_df['Letters'])>2)

我也尝试过这里提到的一些 lambda 东西:filtering grouped df in pandas

谢谢!


因此,如果我想返回一个向量,其中每个字母的 Bool 中所有值的总和为每个字母的条目数超过三个,我该怎么做?根据提供的数据,这将是 [2,1](B 为 2,C 为 1)

最佳答案

我认为您误解了 groupby 的输出:

In [4]: df
Out[4]:
Letters Numbers Items Bool
0 A 1 lamp 1
1 B 2 glass 1
2 B 2 table 1
3 C 5 pic 0
4 B 3 glass 0

In [6]: df.groupby('Letters').filter(lambda x: len(x) > 2)
Out[6]:
Letters Numbers Items Bool
1 B 2 glass 1
2 B 2 table 1
4 B 3 glass 0

groupby 操作产生的对象是一个可迭代对象,它的“迭代对象”是组标签的元组和原始的子集>DataFrame对应组。例如,

In [9]: for name, subset in df.groupby('Letters'):
...: print(name)
...: print(subset)
...: print('\n')
...:
A
Letters Numbers Items Bool
0 A 1 lamp 1


B
Letters Numbers Items Bool
1 B 2 glass 1
2 B 2 table 1
4 B 3 glass 0


C
Letters Numbers Items Bool
3 C 5 pic 0

Bool的值按Letter求和,其中每个组中的成员数大于2:

In [39]: df.groupby('Letters').filter(lambda x: len(x) > 2).groupby('Letters').Bool.sum()
Out[39]:
Letters
B 2
C 1
Name: Bool, dtype: int64

关于python - 如何根据列中的 bool 值进行过滤并返回 groupby obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19440129/

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