Skip to main content
replaced http://stackoverflow.com/ with https://stackoverflow.com/
Source Link
URL Rewriter Bot
URL Rewriter Bot

This is similar to MultiIndex-based indexing in pandasMultiIndex-based indexing in pandas.

Is there a better way to iterate over sub-series?

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])

This will give:

1
b
1    1
2    2
dtype: int64
2
b
1    1
2    1
3    3
dtype: int64

Something like this pseudo-code:

for label, series in g.get_sub_series(level = 0):
    print(label)
    print(series)

This is similar to MultiIndex-based indexing in pandas.

Is there a better way to iterate over sub-series?

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])

This will give:

1
b
1    1
2    2
dtype: int64
2
b
1    1
2    1
3    3
dtype: int64

Something like this pseudo-code:

for label, series in g.get_sub_series(level = 0):
    print(label)
    print(series)

This is similar to MultiIndex-based indexing in pandas.

Is there a better way to iterate over sub-series?

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])

This will give:

1
b
1    1
2    2
dtype: int64
2
b
1    1
2    1
3    3
dtype: int64

Something like this pseudo-code:

for label, series in g.get_sub_series(level = 0):
    print(label)
    print(series)
Source Link
damisan
  • 1k
  • 6
  • 17

Iterating through sub-levels of Series using MultiIndex in pandas

This is similar to MultiIndex-based indexing in pandas.

Is there a better way to iterate over sub-series?

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])

This will give:

1
b
1    1
2    2
dtype: int64
2
b
1    1
2    1
3    3
dtype: int64

Something like this pseudo-code:

for label, series in g.get_sub_series(level = 0):
    print(label)
    print(series)