MultiIndex - установить новый индекс и формат как excelfile - PullRequest
0 голосов
/ 23 января 2019

Мой код должен сгенерировать файл Excel, и я заполняю множество значений на основе другого файла Excel. Прежде всего мне нужно создать все заголовки, в общей сложности 3 с 3 категориями. То есть я использую pandas MultiIndex для написания категории сверху и заголовка внизу. Таким образом можно создать файл excel с требуемыми заголовками и заполненными значениями.

НО

1) Как установить индекс столбца в этом MultiIndex на основе кортежа, чтобы быть индексом? Прямо сейчас он индексируется с номером строки.

2) Как отформатировать имена заголовков, которые являются кортежами? worksheet.write () не обрабатывает это, так как Excel не обрабатывает кортежи ..

Любые лучшие идеи о том, как разобраться в этом, можно только приветствовать!

мой код выглядит примерно так:

import pandas as pd

heading1 = 'Date'
heading2 = 'A'
heading3 = 'B'
heading4 = 'C'
heading5 = 'D'
heading6 = 'E'
heading7 = 'F'

headers = [heading1,heading2,heading3,heading4,heading5,heading6,heading7]
df = pd.DataFrame(columns=headers)
## Dates - One Year

start_date = '01/01/2019'
end_date = '31/12/2019'

df['Date'] = pd.date_range(start=start_date,end=end_date)
L = [('Cat1','Date','B'),('Cat2','C','D'), ('Cat3', 'E','F')]
cols = [(new, c) for new, start, end in L for c in df.loc[:, start:end].columns]

df.columns = pd.MultiIndex.from_tuples(cols)

df.to_excel("out.xlsx")
df1 = pd.read_excel("out.xlsx")
df_compare= pd.read_excel("compare.xlsx")
df[('Cat1','B')] = 'input text'

for i in range (0,len(df1)):
    for j in range (0,len(df_compare)):
        if df.iloc[i][0] == df_compare['Date'][j] and df.iloc[i][1] == df_compare['BB'][j]:
            df[('Cat1','C')][i] = df_compare['CC'][j]
...