Python Pandas,使用merge_cells=False从excel恢复多索引

Python Pandas,使用merge_cells=False从excel恢复多索引,python,pandas,Python,Pandas,当我将多索引和多列数据框保存到excel时。我有两个选择。有合并单元格和无合并单元格=False。这个问题很好地解释了这一点: 如果我使用merge_cells=False,我将不得不使用ffil将合并的单元格填充到前一个单元格中,这可能有点危险,因为如果合并的单元格中没有出现真正的南,它们可能会被错误地覆盖 我可以使用df.to_excelwriter,merge_cells=False生成一个整洁的格式 像这样的多索引数据帧: 读取保存的excel后将变成: writer = pd.Exce

当我将多索引和多列数据框保存到excel时。我有两个选择。有合并单元格和无合并单元格=False。这个问题很好地解释了这一点:

如果我使用merge_cells=False,我将不得不使用ffil将合并的单元格填充到前一个单元格中,这可能有点危险,因为如果合并的单元格中没有出现真正的南,它们可能会被错误地覆盖

我可以使用df.to_excelwriter,merge_cells=False生成一个整洁的格式

像这样的多索引数据帧:

读取保存的excel后将变成:

writer = pd.ExcelWriter('test.xlsx')
df.to_excel(writer, merge_cells=False)
writer.save()
writer.close()

df2 = pd.read_excel('test.xlsx')

   0  1  AA1.a.ng/mL  AA2.a.N/A  CB1.b.N/A  BB2.b.mL  CC1.c.N/A  CC1.d.EU/mL
0  A  1            1          1          1         1          1            1
1  A  2            1          1          1         1          1            1
2  B  1            1          1          1         1          1            1
3  B  2            1          1          1         1          1            1
4  C  1            1          1          1         1          1            1
5  C  2            1          1          1         1          1            1            
我知道该函数,但该函数确实采用了此处不存在的常见存根名称

如何从保存的excel中恢复原始的多索引数据框,合并单元格=False?

在read\u excel中使用参数index\u col进行多索引,然后使用参数index\u col进行多索引:


也许我的问题已经过时了。由于这个老问题,我很担心,但我只是尝试了一下,熊猫阅读合并后的细胞完美无瑕。
writer = pd.ExcelWriter('test.xlsx')
df.to_excel(writer, merge_cells=False)
writer.save()
writer.close()

df2 = pd.read_excel('test.xlsx')

   0  1  AA1.a.ng/mL  AA2.a.N/A  CB1.b.N/A  BB2.b.mL  CC1.c.N/A  CC1.d.EU/mL
0  A  1            1          1          1         1          1            1
1  A  2            1          1          1         1          1            1
2  B  1            1          1          1         1          1            1
3  B  2            1          1          1         1          1            1
4  C  1            1          1          1         1          1            1
5  C  2            1          1          1         1          1            1            
d = {('AA1', 'a', 'ng/mL'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1},
 ('AA2', 'a', 'N/A'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1},
 ('BB2', 'b', 'mL'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1},
 ('CB1', 'b', 'N/A'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1},
 ('CC1', 'c', 'N/A'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1},
 ('CC1', 'd', 'EU/mL'): {('A', 1): 1,
  ('A', 2): 1,
  ('B', 1): 1,
  ('B', 2): 1,
  ('C', 1): 1,
  ('C', 2): 1}}
df = pd.DataFrame(d)
print (df)

      AA1 AA2 BB2 CB1 CC1      
        a   a   b   b   c     d
    ng/mL N/A  mL N/A N/A EU/mL
A 1     1   1   1   1   1     1
  2     1   1   1   1   1     1
B 1     1   1   1   1   1     1
  2     1   1   1   1   1     1
C 1     1   1   1   1   1     1
writer = pd.ExcelWriter('test.xlsx')
df.to_excel(writer, merge_cells=False)
writer.save()
writer.close()

df2 = pd.read_excel('test.xlsx', index_col=[0,1])
df2.columns = df2.columns.str.split('.', expand=True)
print (df2)
      AA1 AA2 BB2 CB1 CC1      
        a   a   b   b   c     d
    ng/mL N/A  mL N/A N/A EU/mL
A 1     1   1   1   1   1     1
  2     1   1   1   1   1     1
B 1     1   1   1   1   1     1
  2     1   1   1   1   1     1
C 1     1   1   1   1   1     1
  2     1   1   1   1   1     1