【发布时间】:2018-09-24 16:28:26
【问题描述】:
在熊猫中我想做:
df.groupby('A').filter(lambda x: x.name > 0) - 按列分组 A 然后过滤名称值为非正数的组。但是,这会取消分组,因为 GroupBy.filter 返回 DataFrame 并因此丢失分组。我想按此顺序执行此操作,因为它对计算的要求应该较低,因为 filter 后跟 groupby 将不会遍历 DataFrame 两次(首先过滤然后分组)?此外,从分组中克隆组(到 dict 或其他内容)会使我失去无缝返回数据帧的功能(例如在 .filter 的示例中,您可以直接获得 DataFrame)
谢谢
例子:
A B
1 -1 1
2 -1 2
3 0 2
4 1 1
5 1 2
df.groupby('A'):
GroupBy object
-1 : [1, 2]
0 : [3]
1 : [4,5]
GroupBy.filter(lambda x: x.name >= 0):
GroupBy object
0 : [3]
1 : [4,5]
【问题讨论】:
-
你能在这里放一个数据框数据的示例吗? :)
-
为什么不简单地按
df而不是df[df['A'] > 0]进行分组? -
因为我希望这将花费两倍于第一次分组然后过滤组的时间,因为我会过滤假设 10 个组而不是 100 万行
-
好吧有道理:)
标签: python pandas pandas-groupby