python – Pandas`DataFrameGroupBy`和`SeriesGroupBy`
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Pandas`DataFrameGroupBy`和`SeriesGroupBy`,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3573字,纯文字阅读大概需要6分钟。
内容图文
![python – Pandas`DataFrameGroupBy`和`SeriesGroupBy`](/upload/InfoBanner/zyjiaocheng/733/a3642bcab67c457d9cb23b56a76cc71f.jpg)
我承认我不是Python大师,但我仍然觉得处理Pandas DataFrameGroupBy和SeriesGroupBy对象异常违反直觉. (我有一个R背景.)
我有以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({'id' : range(1,9),
'code' : ['one', 'one', 'two', 'three',
'two', 'three', 'one', 'two'],
'colour': ['black', 'white','white','white',
'black', 'black', 'white', 'white'],
'irrelevant1': ['foo', 'foo', 'foo','bar','bar',
'foo','bar','bar'],
'irrelevant2': ['foo', 'foo', 'foo','bar','bar',
'foo','bar','bar'],
'irrelevant3': ['foo', 'foo', 'foo','bar','bar',
'foo','bar','bar'],
'amount' : np.random.randn(8)}, columns= ['id','code','colour', 'irrelevant1', 'irrelevant2', 'irrelevant3', 'amount'])
我希望能够按代码和颜色对id进行分组.下面的代码进行分组,但保留所有列.
gb = df.groupby(['code','colour'])
gb.head(5)
id code colour irrelevant1 irrelevant2 irrelevant3 amount
code colour
one black 0 1 one black foo foo foo -0.644170
white 1 2 one white foo foo foo 0.912372
6 7 one white bar bar bar 0.530575
three black 5 6 three black foo foo foo -0.123806
white 3 4 three white bar bar bar -0.387080
two black 4 5 two black bar bar bar -0.578107
white 2 3 two white foo foo foo 0.768637
7 8 two white bar bar bar -0.282577
问题:
1)在gb中,我如何只存储id列(甚至没有任何索引)并摆脱其余的?
2)一旦我有了所需的DataFrameGroupBy gb,如何访问{code = one和color = white}的情况的ID?我试过gb.get_group(‘one’,’white’)和gb.get_group([‘one’,’white’]),但它们不起作用.
3)如何访问{color = white}的条目,即缺少代码索引?
4)最后,manual不是很有帮助,你知道有哪些来源有关如何创建和访问这些分组对象的例子吗?
解决方法:
对于您的问题,您甚至不需要执行分组(但您应该在prose docs中阅读更多相关内容).
一个更好的解决方案是MultiIndex:
In [36]: df = df.set_index(['code', 'colour']).sort_index()
In [37]: df
Out[37]:
id irrelevant1 irrelevant2 irrelevant3 amount
code colour
one black 1 foo foo foo 0.103045
white 2 foo foo foo 0.751824
white 7 bar bar bar -1.275114
three black 6 foo foo foo 0.311305
white 4 bar bar bar -0.416722
two black 5 bar bar bar 1.534859
white 3 foo foo foo -1.068399
white 8 bar bar bar -0.243893
[8 rows x 5 columns]
这照顾1.
2:使用熟悉的切片语法:
In [38]: df.loc['one', 'white']
Out[38]:
id irrelevant1 irrelevant2 irrelevant3 amount
code colour
one white 2 foo foo foo 0.751824
white 7 bar bar bar -1.275114
[2 rows x 5 columns]
3:这是一个横截面,使用.xs:
In [39]: df.xs('white', level='colour')
Out[39]:
id irrelevant1 irrelevant2 irrelevant3 amount
code
one 2 foo foo foo 0.751824
one 7 bar bar bar -1.275114
three 4 bar bar bar -0.416722
two 3 foo foo foo -1.068399
two 8 bar bar bar -0.243893
[5 rows x 5 columns]
4:各地都有例子.检查pandas / groupby标签,文档的this部分是worked on right now,散文文档链接在上面.
内容总结
以上是互联网集市为您收集整理的python – Pandas`DataFrameGroupBy`和`SeriesGroupBy`全部内容,希望文章能够帮你解决python – Pandas`DataFrameGroupBy`和`SeriesGroupBy`所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。