import pandas
as pd
df = pd.DataFrame({
'性别' : [
'男',
'女',
'男',
'女',
'男',
'女',
'男',
'男'],
'成绩' : [
'优秀',
'优秀',
'及格',
'差',
'及格',
'及格',
'优秀',
'差'],
'年龄' : [
15,
14,
15,
12,
13,
14,
15,
16]})
GroupBy=df.groupby(
"性别")
GroupBy.iter() GroupBy对象是一个迭代对象,每次迭代结果是一个元组,元组的第一个元素是该组的名称(就是groupby的列的元素名称),第二个元素是该组的具体信息,是一个数据框,索引是以前的数据框的总索引
for name,
group in GroupBy:
print(name)
print(
group)
女
年龄 性别 成绩
1 14 女 优秀
3 12 女 差
5 14 女 及格
男
年龄 性别 成绩
0 15 男 优秀
2 15 男 及格
4 13 男 及格
6 15 男 优秀
7 16 男 差
GroupBy.groups 显示分组的组名,以及所对应的索引
print(GroupBy.groups)
{
'女': Int64Index([
1,
3,
5], dtype=
'int64'),
'男': Int64Index([
0,
2,
4,
6,
7], dtype=
'int64')}
GroupBy.indices 类似于GroupBy.groups
print(GroupBy.indices)
{
'女':
array([
1,
3,
5], dtype=
int64),
'男':
array([
0,
2,
4,
6,
7], dtype=
int64)}
GroupBy.get_group(name[, obj]) 获得某一个分组的具体信息
In [
2]: GroupBy
.get_group(
"男")
Out[
2]:
年龄 性别 成绩
0 15 男 优秀
2 15 男 及格
4 13 男 及格
6 15 男 优秀
7 16 男 差
Grouper([key, level, freq, axis, sort])
应用
可以先通过循环获得所有的组的名称
for name in GroupBy:
print(
name)
GroupBy.get_group(
name)