[英]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.