Python 数据框中的多行具有相同的索引,如垂直所示

Python 数据框中的多行具有相同的索引,如垂直所示,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试创建一个类似excel文件的数据框,如下所示: 我现在使用的代码是: 1) 导入包 导入操作系统 将numpy作为np导入 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 输入数学 从IPython.core.interactiveshell导入interactiveshell InteractiveShell.ast\u node\u interactivity=“全部” #2)定义功能 def呈现mpl表格(数据,列宽=3.0,行高=0.625,字体大小=1

我正在尝试创建一个类似excel文件的数据框,如下所示:

我现在使用的代码是:

1) 导入包
导入操作系统
将numpy作为np导入
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
输入数学
从IPython.core.interactiveshell导入interactiveshell
InteractiveShell.ast\u node\u interactivity=“全部”
#2)定义功能
def呈现mpl表格(数据,列宽=3.0,行高=0.625,字体大小=14,
标题颜色='#40466e',行颜色=['#f1f1f2',w'],边颜色='w',
bbox=[0,0,1,1],标题\列=0,
ax=无,**kwargs):
如果ax为无:
size=(np.array(data.shape[::-1])+np.array([0,1])*np.array([col\u-width,row\u-height])
图,ax=plt.子批次(图尺寸=尺寸)
ax.轴(“关闭”)
mpl_table=ax.table(cellText=data.values,bbox=bbox,colLabels=data.columns,**kwargs)
mpl表格。自动设置字体大小(错误)
mpl_表格。设置字体大小(字体大小)
对于k,mpl_表中的单元格。_cells.items():
单元格。设置边缘颜色(边缘颜色)
如果k[0]==0或k[1]<标题列:
cell.set_text_props(weight='bold',color='w')
单元格设置面颜色(标题颜色)
其他:
单元格.设置面颜色(行颜色[k[0]%len(行颜色)])
返回ax.get_figure(),ax
df=pd.DataFrame()
df['行星]=['地球','水星','木星']
df['time']=[220021001500]
df['distance']=[8,7.5,8.2]
df['Bz']=[9,8,10]
图,ax=渲染mpl表格(df,标题列=0,列宽度=2.0)
我得到的是:


我想做的是让数据框垂直显示索引,一次对3行后续行使用相同的索引。

这怎么样?我添加了列
R(km)
作为您显示的预期输出,但您可以 对其他列应用与第二个索引相同的原则

df = pd.DataFrame()
df['Planet'] = ['Earth']*3 + ['Mercury']*3 +['Jupiter']*3
df['R(km)'] = [100]*3 + [200]*3 +[300]*3
df['time'] = [2200, 2100, 1500]*3
df['distance'] = [8, 7.5, 8.2]*3
df['Bz'] = [9,8, 10]*3
df.set_index(['Planet', 'R(km)'])

您可能想看看多重索引?您的函数
render\u mpl\u table
来自哪里?你是从我这儿抄的吗?您使用哪个库进行绘图?请将所有这些信息添加到您的问题中。@mosc9575是的,我添加了!很抱歉包含了完整的代码。哦,谢谢!这就是我要找的!您是否也知道如何强制垂直显示索引?它似乎无法与函数一起工作。是否可以通过修改熊猫数据帧的样式,例如
df.style.set\u table\u styles
,以不同的方式处理您的呈现函数。我没有尝试,但我想这次讨论可能会对你有所帮助。kr.似乎没有帮助:(
df = pd.DataFrame()
df['Planet'] = ['Earth']*3 + ['Mercury']*3 +['Jupiter']*3
df['R(km)'] = [100]*3 + [200]*3 +[300]*3
df['time'] = [2200, 2100, 1500]*3
df['distance'] = [8, 7.5, 8.2]*3
df['Bz'] = [9,8, 10]*3
df.set_index(['Planet', 'R(km)'])