gpt4 book ai didi

python - 嵌套的 Pandas 数据框 - 如何按数据选择/分组?

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:44 24 4
gpt4 key购买 nike

我从嵌套字典生成了一个 Pandas 数据框,如下所示:

                Col1      Col2      Col3
XXX aaa 1 8 1
bbb 9 7 4
ccc 3 5 9
ddd 2 7 2

YYY aaa 8 7 6
bbb 1 7 3
ccc 2 4 5
ddd 2 1 1

ZZZ aaa 2 2 4
bbb 1 7 5
ccc 0 1 2
ddd 0 9 6

我现在正在努力完成以下任务:

1.获取所有数据,其中第二个索引 = "bbb"包括第一个索引值,如本例所示:

               Col1      Col2      Col3
XXX bbb 1 8 1
YYY bbb 8 7 6
ZZZ bbb 2 2 4

2.将数据帧分组为按第一个索引值(“XXX”、“YYY”、...)分组的多个数据帧

浏览 Pandas 文档和相关的 stackoverflow 问题并没有让我更进一步......

最佳答案

在嵌套的 DataFrame 中不是 index 而是 MultiIndex .

import pandas as pd
df = pd.DataFrame({'Col2': {('ZZZ', 'ccc'): 1, ('ZZZ', 'aaa'): 2, ('ZZZ', 'ddd'): 9, ('XXX', 'aaa'): 8, ('XXX', 'ccc'): 5, ('YYY', 'bbb'): 7, ('XXX', 'ddd'): 7, ('ZZZ', 'bbb'): 7, ('YYY', 'ddd'): 1, ('YYY', 'aaa'): 7, ('YYY', 'ccc'): 4, ('XXX', 'bbb'): 7}, 'Col3': {('ZZZ', 'ccc'): 2, ('ZZZ', 'aaa'): 4, ('ZZZ', 'ddd'): 6, ('XXX', 'aaa'): 1, ('XXX', 'ccc'): 9, ('YYY', 'bbb'): 3, ('XXX', 'ddd'): 2, ('ZZZ', 'bbb'): 5, ('YYY', 'ddd'): 1, ('YYY', 'aaa'): 6, ('YYY', 'ccc'): 5, ('XXX', 'bbb'): 4}, 'Col1': {('ZZZ', 'ccc'): 0, ('ZZZ', 'aaa'): 2, ('ZZZ', 'ddd'): 0, ('XXX', 'aaa'): 1, ('XXX', 'ccc'): 3, ('YYY', 'bbb'): 1, ('XXX', 'ddd'): 2, ('ZZZ', 'bbb'): 1, ('YYY', 'ddd'): 2, ('YYY', 'aaa'): 8, ('YYY', 'ccc'): 2, ('XXX', 'bbb'): 9}})
print df
Col1 Col2 Col3
XXX aaa 1 8 1
bbb 9 7 4
ccc 3 5 9
ddd 2 7 2
YYY aaa 8 7 6
bbb 1 7 3
ccc 2 4 5
ddd 2 1 1
ZZZ aaa 2 2 4
bbb 1 7 5
ccc 0 1 2
ddd 0 9 6

print df.index
MultiIndex(levels=[[u'XXX', u'YYY', u'ZZZ'],
[u'aaa', u'bbb', u'ccc', u'ddd']],
labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]])

我认为您可以使用选择功能 xs :

print df.xs('aaa', level=1)
Col1 Col2 Col3
XXX 1 8 1
YYY 8 7 6
ZZZ 2 2 4

print df.xs('bbb', level=1)
Col1 Col2 Col3
XXX 9 7 4
YYY 1 7 3
ZZZ 1 7 5
文档中的

Multiindexhere .

选择:
cross section
using slicers - 其他 solution

groupby通过第一级 Multiindex 进行聚合,例如mean :

print df.groupby(level=0).mean()
Col1 Col2 Col3
XXX 3.75 6.75 4.00
YYY 3.25 4.75 3.75
ZZZ 0.75 4.75 4.25

Groupby with multiindex

关于python - 嵌套的 Pandas 数据框 - 如何按数据选择/分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com