Python 在pandas中使用多索引迭代序列的子级别
这类似于 有更好的方法迭代子序列吗Python 在pandas中使用多索引迭代序列的子级别,python,pandas,Python,Pandas,这类似于 有更好的方法迭代子序列吗 df = pd.DataFrame([[1,1,1], [1,2,1], [1,2,2], [2,1,1], [2,2,1], [2,3,1], [2,3,2], [2,3,3]], columns=['a', 'b', 'c']) g = df.groupby(['a', 'b']).size() for label in g.index.levels[0]: print(la
df = pd.DataFrame([[1,1,1], [1,2,1], [1,2,2],
[2,1,1], [2,2,1], [2,3,1], [2,3,2], [2,3,3]],
columns=['a', 'b', 'c'])
g = df.groupby(['a', 'b']).size()
for label in g.index.levels[0]:
print(label)
print(g[label])
这将提供:
1
b
1 1
2 2
dtype: int64
2
b
1 1
2 1
3 3
dtype: int64
类似于以下伪代码:
for label, series in g.get_sub_series(level = 0):
print(label)
print(series)
可能
对于标签,g.groupby(level=0)中的系列?我应该在另一个groupby+快速计数的结果系列上使用groupby吗?这不会重新计算组吗?数据帧可能是~300MB。300MB对于熊猫来说不应该太大,也可能是您可以先尝试groupby('b'),然后针对每个子组尝试groupby('a')。我不知道你想做什么,这是我的建议。@Psidom:是的,300 MiB就可以了。我的问题是再次做同样的工作(分组),考虑到数据量,这需要一些时间。是的,我可以先按b分组。这不是问题所在。我的原始帖子中的代码完成了这项工作。我想知道如何在不重新计算任何内容和不进行n次哈希查找的情况下(如果可能的话)在多索引系列中迭代级别0。通过这种方式,我学到了一些关于熊猫的新知识:)