Python 将axes.table多索引划分为不同的列

Python 将axes.table多索引划分为不同的列,python,matplotlib,Python,Matplotlib,我正在尝试创建一个具有多个索引的交叉表,我需要将其打印在pdf上。 我正在使用matplotlib在pdf上打印数据,但找不到任何有助于将dataframe直接打印到pdf的方法。 因此,使用axis.table将数据框转换为要打印在pdf上的表格。 然而,dataframe中的两个索引合并在表中的1中。 见下面的输出 这些索引('ABC','D')可以像ABC | D一样分成两列吗。 如果是,如何进行 import matplotlib.pyplot as plt import matplo

我正在尝试创建一个具有多个索引的交叉表,我需要将其打印在pdf上。 我正在使用matplotlib在pdf上打印数据,但找不到任何有助于将dataframe直接打印到pdf的方法。 因此,使用axis.table将数据框转换为要打印在pdf上的表格。 然而,dataframe中的两个索引合并在表中的1中。 见下面的输出

这些索引('ABC','D')可以像ABC | D一样分成两列吗。 如果是,如何进行

import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf
import pandas as pd

pdf = matplotlib.backends.backend_pdf.PdfPages("test.pdf")

fig = plt.figure(figsize=(20, 20))
grid = plt.GridSpec(1, 2, wspace=0.2,width_ratios=[14, 6])
plt.autoscale()
ax0 = fig.add_subplot(grid[0 ,0])
ax1 = fig.add_subplot(grid[0, 1])
df = pd.DataFrame({'country': ['ABC','PQR','XYZ','ABC','PQR'], 'region': ['D','E','F','D','F'], 'month_day':[1,1,1,2,3],'sales' : [100,200,300,500,100]})
table=pd.pivot_table(df, values='sales', index=['country','region'], columns=['month_day'], aggfunc=sum, fill_value=0)

#for printing on pdf
the_table = ax0.table(cellText=table.values,colLabels=table.columns,rowLabels=table.index,loc='center')

pdf.savefig(fig, bbox_inches='tight')
pdf.close() 

几次尝试后找到了解决方案。 表.重置索引(就地=真) 他在这个案子里工作过

import matplotlib.pyplot as plt
import matplotlib.backends.backend_pdf
import pandas as pd

pdf = matplotlib.backends.backend_pdf.PdfPages("test.pdf")

fig = plt.figure(figsize=(20, 20))
grid = plt.GridSpec(1, 2, wspace=0.2,width_ratios=[14, 6])
plt.autoscale()
ax0 = fig.add_subplot(grid[0 ,0])
ax1 = fig.add_subplot(grid[0, 1])
df = pd.DataFrame({'country': ['ABC','PQR','XYZ','ABC','PQR'], 'region': ['D','E','F','D','F'], 'month_day':[1,1,1,2,3],'sales' : [100,200,300,500,100]})
table=pd.pivot_table(df, values='sales', index=['country','region'], columns=['month_day'], aggfunc=sum, fill_value=0)
table.reset_index(inplace=True)
the_table = ax0.table(cellText=table.values,colLabels=table.columns,colWidths=[0.07,0.06,0.04,0.04,0.04],loc='center')
ax0.axis("off")
ax1.axis("off")
plt.axis("off")
pdf.savefig(fig, bbox_inches='tight')
pdf.close()