Python Pandas,使用merge_cells=False从excel恢复多索引
当我将多索引和多列数据框保存到excel时。我有两个选择。有合并单元格和无合并单元格=False。这个问题很好地解释了这一点: 如果我使用merge_cells=False,我将不得不使用ffil将合并的单元格填充到前一个单元格中,这可能有点危险,因为如果合并的单元格中没有出现真正的南,它们可能会被错误地覆盖 我可以使用df.to_excelwriter,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
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