In the index of the
Series,
Tens
is level 0 and
Ones
is level 1.
Ones
is the
last
or
innermost
level of the index.
import sys
import pandas as pd
nrows = 3
ncols = 4
rangeOfRows = range(10, 10 * (nrows + 1), 10) #count by 10s
rangeOfCols = range(1, ncols + 1) #count by 1s
index = [
[row for row in rangeOfRows for _ in rangeOfCols],
nrows * list(rangeOfCols)
]
data = [tens + ones for tens, ones in zip(*index)]
series = pd.Series(data = data, index = index, name = "Sums")
series.index.names = ["Tens", "Ones"]
print(series)
print()
df = series.unstack()
print(df)
print()
series = df.stack()
print(series)
sys.exit(0)
Tens Ones
10 1 11
2 12
3 13
4 14
20 1 21
2 22
3 23
4 24
30 1 31
2 32
3 33
4 34
Name: Sums, dtype: int64
Ones 1 2 3 4
Tens
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34
Tens Ones
10 1 11
2 12
3 13
4 14
20 1 21
2 22
3 23
4 24
30 1 31
2 32
3 33
4 34
dtype: int64
import sys
import string
import functools
import numpy as np
import pandas as pd
import roman_numerals
levels = [
["Romans", 2],
["Letters", 2], #how many letters per Roman numeral
["Numbers", 2] #how many numbers per letter
]
nRomans = levels[0][1]
nLetters = levels[1][1] #letters per roman
nNumbers = levels[2][1] #numbers per letter
romans = [
roman_numerals.convert_to_numeral(i)
for i in range(1, nRomans + 1)
for j in range(nLetters)
for k in range(nNumbers)
]
letters = [
letter
for i in range(1, nRomans + 1)
for letter in string.ascii_uppercase[:nLetters]
for k in range(nNumbers)
]
numbers = [
number
for i in range(1, nRomans + 1)
for j in range(nLetters)
for number in list(range(1, nNumbers + 1))
]
listOfLists = [
romans,
letters,
numbers
]
names = [level[0] for level in levels]
counts = [level[1] for level in levels]
nRows = functools.reduce(lambda product, factor: product * factor, counts, 1)
multiIndex = pd.MultiIndex.from_arrays(listOfLists, names = names)
series = pd.Series(
data = np.arange(nRows),
index = multiIndex,
name = "Outline"
)
print(series)
sys.exit(0)
Romans Letters Numbers
Ⅰ A 1 0
2 1
B 1 2
2 3
Ⅱ A 1 4
2 5
B 1 6
2 7
Name: Outline, dtype: int64