Python 如何访问pandas dataframe groupby对象中的数据?

Python 如何访问pandas dataframe groupby对象中的数据?,python,pandas,group-by,Python,Pandas,Group By,使用以下代码创建了df_分组 df_grouped = df.groupby(by='Pclass') 下面的循环打印Pclass值以及每个分组数量的长度 for val,grp in df_grouped: print('There were',len(grp),'people traveling in',val,'class.') 代码如何访问信息?如何使用val&grp而不提前引用?此信息是如何存储在groupby对象中的?如文档中所述,数据存储在groupby对象中,该对象是

使用以下代码创建了df_分组

df_grouped = df.groupby(by='Pclass')
下面的循环打印Pclass值以及每个分组数量的长度

for val,grp in df_grouped:
    print('There were',len(grp),'people traveling in',val,'class.')
代码如何访问信息?如何使用val&grp而不提前引用?此信息是如何存储在groupby对象中的?

如文档中所述,数据存储在
groupby对象中,该对象是一种具有特殊功能的数据结构

您可以自己验证这一点:

>>> type(df_grouped)
应返回:

<class 'pandas.core.groupby.DataFrameGroupBy'>

文档中的这个片段很好地解释了数据的结构:

“组”属性是一个dict,其键是计算出的唯一组,相应的值是属于每个组的轴标签

正如您所注意到的,您可以轻松地遍历每个组。但是,通常有一些矢量化方法可以很好地处理
groupby
对象,并且可以更有效、更快速地访问信息和计算内容。

参考:“groups属性是一个dict,其键是计算出的唯一组,相应的值是属于每个组的轴标签”

您可能有兴趣查看
.agg()
,例如:

df = pd.DataFrame([['Person A', 2, 3, 4],
                ['Person B', 3, 2, 1],
                ['Person C', 5, 7, 5],
                ['Person A', 3, 4, 9],
                ['Person C', 8, 3, 2]],
                columns=['Person','Val 1','Val 2','Val 3'])
提供以下数据帧:

     Person  Val 1  Val 2  Val 3
0  Person A      2      3      4
1  Person B      3      2      1
2  Person C      5      7      5
3  Person A      3      4      9
4  Person C      8      3      2
然后通过
agg
进行
分组:

df.groupby('Person').agg({'Val 1': 'sum', 'Val 2': 'mean', 'Val 3': 'count'})
给出:

          Val 1  Val 2  Val 3
Person                       
Person A      5    3.5      2
Person B      3    2.0      1
Person C     13    5.0      2

在这里,您只需将一个字典传递给
agg
,该字典指定您希望对特定列的每个组执行的操作。

如果您展示一个数据帧的示例,这会有所帮助。至于问题#2,val,grp只是占位符变量,指示您希望为iterable.Fo收集对应的对r一个更简单的示例,尝试“在'abcd'中输入i”:打印(i)”并查看返回的内容。