首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pandas快速对数据帧中的多个数据要素进行分组

如何使用pandas快速对数据帧中的多个数据要素进行分组
EN

Stack Overflow用户
提问于 2021-05-01 15:21:05
回答 1查看 33关注 0票数 2

假设这是我的原始数据:

代码语言:javascript
复制
data = {'library_id': ['A123', 'A456','B123', 'A123', 'A123', 'B123', 'A456'],
     'school': ['A1','A', 'B', 'A', 'A2', 'B', 'A'],
     'charge ($)': [5.0, 10.0, 3.0, 2.5, 1.0, 4.0, 2.5], 
     'check_in_month': [12, 3, 4, 5, 4, 9, 5]}
library =pd.DataFrame(data)

我正在尝试得到这样的结果:

下面是我用来获得结果的代码:

代码语言:javascript
复制
df = pd.DataFrame(library.library_id.value_counts())

school_list = []
for i in df.index:
    school_list.append(library[library.library_id == i].school.unique())
df['school'] = school_list
df  

我的问题是如何避免使用列表(即school_list = [])来获得相同的结果。因为当我有大量数据时,使用列表将数据追加到数据框中非常耗时。有没有其他更快的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-01 15:27:17

您可以尝试:

代码语言:javascript
复制
result = library.groupby("library_id").agg({"library_id": "size", "school": "unique"})

要获得

代码语言:javascript
复制
            library_id       school
library_id
A123                 3  [A1, A, A2]
A456                 2          [A]
B123                 2          [B]

我们按library_id分组,然后agg在组sizeunique条目上对其进行重新排序。

如果不希望library_id出现在索引的顶部,可以编写result.index.name = None,因为它是result的索引名。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67343838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档