从DataFrame中的选定行绘制表格



我有一个看起来像这样的数据帧:

import pandas as pd
df = pd.DataFrame({'Institution':['Uni1', 'Uni2', 'Uni3', 'Uni1', 'Uni2', 'Uni3'],
'Year': [2018, 2018, 2018, 2019, 2019, 2019],
'Value': [1000000, 2000000, 250000, 2300000, 3000000, 90000],
'Rank': [10, 9, 1, 8, 7, 3]})

我想把数据分组成一个表格:

Uni1    Uni2   Uni3
2018 1000000 2000000 250000
2019 2300000 3000000 90000

到目前为止,我只是试图绘制一个不按年份分隔的简单表格,它看起来像:

Uni1    Uni2   Uni3    Uni1    Uni2   Uni3
1000000 2000000 250000 2300000 3000000 90000

这就是我正在使用的:

import matplotlib.pyplot as plt
plt.table(cellText = df.values.T)

这样可以打印整个数据帧,但当我试图只得到一行时,我会得到以下内容:

plt.table(cellText = df['Value'].values.T)
TypeError: object of type 'numpy.int64' has no len()

我知道一个解决方案是定义一个新的DataFrame,它只由我想要绘制的行组成,但我怀疑这是最干净的解决方案。

绘制值列:

plt.table(cellText = df[['Value']].values.T)

请记住,df[['Value']]返回DataFrame,而df['Value']返回Series。

使用DataFrame.pivot_table:为每年创建行

df_table=df.pivot_table(index='Year',columns='Institution',values='Value')
print(df_table)

Institution     Uni1     Uni2    Uni3
Year                                 
2018         1000000  2000000  250000
2019         2300000  3000000   90000

则使用plt.table:

plt.table(cellText = df_table.values)

最新更新