是否有方法对DataFrameGroupBy对象进行切片?
例如,如果我有:
df = pd.DataFrame({'A': [2, 1, 1, 3, 3], 'B': ['x', 'y', 'z', 'r', 'p']})
A B
0 2 x
1 1 y
2 1 z
3 3 r
4 3 p
dfg = df.groupby('A')
现在,返回的GroupBy对象是由A中的值索引的,我想选择它的一个子集,例如执行聚合。
dfg.loc[1:2].agg(...)
或者,对于特定的列,
dfg['B'].loc[1:2].agg(...)
编辑。为了更清楚地说明:通过分割GroupBy对象,我的意思是只访问组的子集。2在上面的例子中,GroupBy对象将包含3个组,分别为A = 1、A = 2和A = 3。3由于某些原因,我可能只对A = 1和A = 2的组感兴趣。
2条答案
按热度按时间idv4meu81#
看起来您需要使用
iloc
的自定义函数-但如果需要使用agg
,则返回聚合值:对于多列:
kmpatx3s2#
如果我理解正确的话,您只需要一些组,但这些组应该完全返回:
您可以通过提取密钥,然后根据这些密钥选择组来解决问题。
假设您已经知道这些组:
如果你不知道组名,只是寻找随机的n个组,这可能会起作用:
这两种情况下的输出都是普通的DataFrame,而不是DataFrameGroupBy对象,因此最好先过滤DataFrame,然后再进行聚合:
未知组相同:
我相信有一些Stackoverflow的答案是关于这个的,比如How to access pandas groupby dataframe by key