grouped.get_group((‘B‘, ‘A‘))选择分组

1. df.groupby(['team', df.name.str[0]])

  • df.groupby(['team', df.name.str[0]]) 这一部分代码表示对 DataFrame df 按照 两个条件 进行分组:

    • 按照 'team' 列(即团队)。
    • 按照 'name' 列的 首字母df.name.str[0])。
  • df.name.str[0] 使用了 str 访问器和 .str[0] 索引来获取 'name' 列中每个名字的首字母。例如,如果某个名字是 "Alice",那么 df.name.str[0] 就会返回 'A'

  • 因此,分组后的结果是按团队(team)和每个人姓名的首字母进行二重分组。

2. grouped2.get_group(('B', 'A'))

  • grouped2.get_group(('B', 'A')) 表示从已经按 teamname 首字母分组的结果中,选出 teamB 且姓名首字母为 A 的组。
  • get_group(('B', 'A')) 方法返回的是符合条件的组的 DataFrame 数据。

示例:

假设你有如下的 DataFrame df

python 复制代码
import pandas as pd

# 创建一个示例 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'team': ['A', 'B', 'A', 'B', 'A'],
    'score': [90, 80, 85, 95, 88]
}
df = pd.DataFrame(data)

print(df)

输出:

复制代码
      name team  score
0    Alice    A     90
1      Bob    B     80
2  Charlie    A     85
3    David    B     95
4      Eva    A     88

执行 grouped2 = df.groupby(['team', df.name.str[0]])

python 复制代码
grouped2 = df.groupby(['team', df.name.str[0]])

这将按照 team 和姓名首字母进行分组,得到一个分组对象。现在,grouped2 是一个包含多个组的 GroupBy 对象。

执行 grouped2.get_group(('B', 'A'))

python 复制代码
grouped2.get_group(('B', 'A'))

这行代码会选出 teamB 且姓名首字母为 A 的分组。输出将是:

复制代码
    name team  score
1    Bob    B     80

解释:

  • teamB 且姓名首字母为 A 的数据只有 Bob,因此返回的结果是一个 DataFrame,其中只包含 Bob 这一行数据。

完整代码

python 复制代码
import pandas as pd

# 创建一个示例 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'team': ['A', 'B', 'A', 'B', 'A'],
    'score': [90, 80, 85, 95, 88]
}
df = pd.DataFrame(data)

print(df)

grouped2 = df.groupby(['team', df.name.str[0].str.upper()])  # 确保首字母是大写
print(grouped2.groups)

grouped2.get_group(('B', 'B'))

输出:

总结:

  • df.groupby(['team', df.name.str[0]]) :按团队 (team) 和姓名的首字母 (df.name.str[0]) 进行二重分组。
  • get_group(('B', 'A')) :获取 teamB 且姓名首字母为 A 的分组数据。在本例中,只有 Bob 这一行符合条件,因此返回该行数据。

这种方法非常有用,可以实现更复杂的分组,比如按某一列的部分值(如首字母、日期的月或周等)进行分组。

补充:

分组对象的groups方法会生成一个字典(其实是Pandas定义的PrettyDict),这个字典包含分组的名称和分组的内容索引列表,然后我们可以使用字典的.keys()方法取出分组名称:

python 复制代码
import pandas as pd

# 创建一个示例 DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
    'team': ['A', 'B', 'A', 'B', 'A'],
    'score': [90, 80, 85, 95, 88]
}
df = pd.DataFrame(data)

print(df,'\n')
grouped = df.drop('name', axis=1).groupby('team')
result = grouped.sum()
print(result,'\n')
print(df.groupby('team').groups,'\n')
print(df.groupby('team').groups.keys(),'\n')

输出:

相关推荐
网安墨雨9 分钟前
Python自动化一------pytes与allure结合生成测试报告
开发语言·自动化测试·软件测试·python·职场和发展·自动化
powerfulhell17 分钟前
寒假python作业5
java·前端·python
铉铉这波能秀24 分钟前
LeetCode Hot100 中 enumerate 函数的妙用(2026.2月版)
数据结构·python·算法·leetcode·职场和发展·开发
毕设源码-赖学姐26 分钟前
【开题答辩全过程】以 基于python的电影推荐系统为例,包含答辩的问题和答案
开发语言·python
敲键盘的生活28 分钟前
MoneyPrinter重构之一:用nicegui调用大模型生成视频文案
python·重构·aigc·ai编程·ai写作
小邓睡不饱耶30 分钟前
2026 CSDN榜单封神!3大热门技术+5个大厂案例,新手也能直接抄作业
python·ai
南极星100534 分钟前
我的创作纪念日--128天
java·python·opencv·职场和发展
码界筑梦坊35 分钟前
327-基于Django的兰州空气质量大数据可视化分析系统
python·信息可视化·数据分析·django·毕业设计·数据可视化
Highcharts.js35 分钟前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
啊阿狸不会拉杆41 分钟前
《机器学习导论》第 7 章-聚类
数据结构·人工智能·python·算法·机器学习·数据挖掘·聚类