I create a dataframe this way, with 3 levels of columns:
segment = 's1'
tuples = [(segment, 'mark', 'base'),
(segment, 'mark', 'quot'),
(segment, 'mark', 'symb'),
(segment, 'mark', 'wall'),
(segment, 'mark', 'type'),
(segment, 'mark', 'deri'),
(segment, 'mark', 'marg'),
(segment, 'type', 'inst'),
(segment, 'type', 'tran'),
(segment, 'type', 'prio'),
(segment, 'trade', 'quantity')
]
columns = pd.MultiIndex.from_tuples(tuples, names=["level_1", "level_2", 'level_3'])
df = pd.DataFrame(columns=columns)
I can add a column with only one level but Pandas return an error when I add a new column with two levels. What is the reason for this and how I could do that ?
# Put value in cells
fill_df()
# Increment indexes
df.index = (i for i in range(len(df)))
for index, row in df.iterrows():
df.loc[index, 'route'] = something # OK
df.loc[index, ('route', 'best')] = something # KeyError: 'route'
df.loc[index, 'route')] = something # OKNOT OKsyntaxError, closing parenthesis without opening.