【发布时间】:2019-12-16 05:08:46
【问题描述】:
当我将多索引和多列数据框保存到 Excel 时。我有两个选择。有和没有merge_cells=False。这个 SO Question 很好地解释了这一点:
Avoid merged cells in pandas to_excel method
如果我确实使用 merge_cells=False,我将不得不使用 ffil 用前一个单元格填充合并的单元格,这可能有点危险,因为如果真的有 Nans(不是从合并的单元格中出现),他们可能(错误地)被覆盖。
我可以使用df.to_excel(writer, merge_cells=False) 生成一个整洁的格式
像这样的多索引数据帧 (https://pastebin.com/Me0QhwUy):
AA1 AA2 CB1 BB2 CC1
a a b b c d
ng/mL N/A N/A mL N/A EU/mL
0 1
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
会变成(读取保存的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
我知道函数wide to long,但这个函数确实假设了这里不存在的常见存根名称。
如何从保存的 excel 中恢复原始多索引数据框(使用 merged_cell=False)?
【问题讨论】: