gpt4 book ai didi

python - 切片 DataFrameGroupBy 对象

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:15 26 4
gpt4 key购买 nike

有没有办法对 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 对象,我的意思是只访问组的一个子集。在上面的示例中,GroupBy 对象将包含 3 个组,分别为 A = 1、A = 2 和 A = 3。出于某些原因,我可能只对 A = 1 和 A = 2 的组感兴趣。

最佳答案

看来您需要使用 iloc 的自定义函数 - 但如果使用 agg 是必需的,则返回聚合值:

df = df.groupby('A')['B'].agg(lambda x: ','.join(x.iloc[0:3]))
print (df)
A
1 y,z
2 x
3 r,p
Name: B, dtype: object

df = df.groupby('A')['B'].agg(lambda x: ','.join(x.iloc[1:3]))
print (df)
A
1 z
2
3 p
Name: B, dtype: object

对于多列:

df = pd.DataFrame({'A': [2, 1, 1, 3, 3], 
'B': ['x', 'y', 'z', 'r', 'p'],
'C': ['g', 'y', 'y', 'u', 'k']})
print (df)
A B C
0 2 x g
1 1 y y
2 1 z y
3 3 r u
4 3 p k

df = df.groupby('A').agg(lambda x: ','.join(x.iloc[1:3]))
print (df)
B C
A
1 z y
2
3 p k

关于python - 切片 DataFrameGroupBy 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46236925/

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