繁体   English   中英

如何从熊猫中的groupby对象中选择不同的行

[英]How to select distinct rows from groupby object in Pandas

我试图根据条件从groupby对象中删除行:

Group    value
  A        0
  A       20
  A       25
  B        5
  C        6
  C       17

对于数据框,如果我想删除任何小于10的值,则可以调用df[df['value']>=10] 我似乎找不到一种对groupby对象进行类似操作的方法。

 Group    value
  A       20
  A       25
  C       17

也许您正在寻找filter
如果要返回与值总和大于或等于10的组有关的行:

In [11]: g = df.groupby('Group')

In [12]: g.filter(lambda x: x.value.sum() >= 10)
Out[12]: 
  Group  value
0     A      0
1     A     20
2     A     25
4     C      6
5     C     17

[5 rows x 2 columns]

您需要提供一个作用于每个subDataFrame并返回布尔结果的函数,subDataFrames的示例为df[df['Group'] == 'A']

我可能不明白您的意图,或者解决方案很简单:

group = "A A A B C C".split()
value = [0,20,25,5,6,17]
df = DataFrame(zip(group, value), columns='group value'.split())
df

     group   value
0    A       0
1    A       20
2    A       25
3    B       5
4    C       6
5    C       17

g = df.groupby('group')
g.sum()[(g.sum() >=10)['value']]

     value
group   
A    45
C    23

我猜您假设您可以在groupby对象中选择内容。 据我所知,你做不到。 但是, 应用聚合函数之后 ,可以在生成的对象中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM