如何在熊猫中创建层次列?

理查德

我有一个看起来像这样的熊猫数据框:

          rank_2015   num_2015   rank_2014   num_2014   ....  num_2008
France    8           1200       9           1216       ....  1171
Italy     11          789        6           788        ....  654

现在,我想num_按年份绘制仅总和的条形图因此,在x轴上,我想要从2008年到2015年的年份,在y轴上,我想要相关num_的总和

最好的方法是什么?我知道如何获取每一列的总和:

df.sum()

但是我不知道如何仅绘制图表num_,以及如何重新标记这些列,以便标签是整数而不是字符串,以便正确绘制图表。

我想知道是否要创建分层列,如下所示:

          rank               num
          2015        2014   2015     2014   ....  2008
France    8           9      1200     1216   ....  1171
Italy     11          6      789      788    ....  654

然后,我可以将图表中的列绘制成图表num

如何使数据框变成这种形状?

忘了它

您可以使用str.extract正则表达式模式(.+)_(\d+)将列转换为DataFrame:

cols = df.columns.str.extract(r'(.+)_(\d+)', expand=True)
#       0     1
# 0   num  2008
# 1   num  2014
# 2   num  2015
# 3  rank  2014
# 4  rank  2015

然后,您可以从中构建层次结构(MultiIndex)索引cols然后将其重新分配给df.columns

df.columns = pd.MultiIndex.from_arrays((cols[0], cols[1]))

这样df就变成了

         num             rank     
        2008  2014  2015 2014 2015
France  1171  1216  1200    9    8
Italy    654   788   789    6   11

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({ 'num_2008': [1171, 654],
 'num_2014': [1216, 788],
 'num_2015': [1200, 789],
 'rank_2014': [9, 6],
 'rank_2015': [8, 11]}, index=['France', 'Italy'])


cols = df.columns.str.extract(r'(.+)_(\d+)', expand=True)
cols[1] = pd.to_numeric(cols[1])
df.columns = pd.MultiIndex.from_arrays((cols[0], cols[1]))
df.columns.names = [None]*2

df['num'].sum().plot(kind='bar')
plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在熊猫中合并两列

来自分类Dev

分组后访问熊猫中的层次列

来自分类Dev

如何从列中的数据创建层次结构索引?

来自分类Dev

剑道:如何在TreeView中创建递归层次结构?

来自分类Dev

如何基于熊猫中两列的时差创建新列?

来自分类Dev

如何在熊猫中创建新的计算列并删除原始列?

来自分类Dev

如何在熊猫中使用groupby创建索引列

来自分类Dev

如何在熊猫列中为唯一值创建行?

来自分类Dev

如何在熊猫中使用groupby创建新列?

来自分类Dev

如何在熊猫中添加两列

来自分类Dev

如何在熊猫中创建多列数据透视表?

来自分类Dev

如何在熊猫中为不同子集元素创建滚动均值列?

来自分类Dev

如何在熊猫中更新多列

来自分类Dev

熊猫:如何在数据框架中创建新列并考虑其他现有列在其中添加值

来自分类Dev

熊猫,如何从一组行创建层次索引

来自分类Dev

熊猫中的层次列

来自分类Dev

在熊猫中创建层次结构列的问题

来自分类Dev

如何在熊猫中使用条件格式创建日期列

来自分类Dev

如何在熊猫数据框中创建新列

来自分类Dev

如何在Node.js中为数组/对象数据创建层次结构?

来自分类Dev

如何在matplotlib中创建层次结构标签

来自分类Dev

剑道:如何在TreeView中创建递归层次结构?

来自分类Dev

熊猫层次列

来自分类Dev

如何在熊猫列表后创建许多列?

来自分类Dev

如何在熊猫中创建新的计算列并删除原始列?

来自分类Dev

如何在熊猫中调用单个列?

来自分类Dev

如何在熊猫中组合两列

来自分类Dev

如何在pandas数据框中创建列层次索引

来自分类Dev

如何在 Haskell 中创建树层次结构?

Related 相关文章

热门标签

归档