将同一个表中的两个索引(列名?)组合成1个?

时间:2017-12-02 17:28:57

标签: python pandas

我正在利用一个数据透视来汇总数据。数据格式如下:

year    month    name
2012    1        annie
2012    1        annie
2012    2        david
2012    2        david
2012    2        david

我使用以下代码创建一个数据透视:

date_pivot = pd.pivot_table(date_pivot, index=['name'], columns=['year','month'], aggfunc=len)

将数据汇总到表单中:

year    2012
month   1        2
name    
annie   2        0
david   0        3

含义我认为列名被分成两个单独的部分。我想将它们组合成表单的单个列名:

2012.1    2012.2

这样我以后可以定义一些列名范围。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我认为您可以创建另一个列,其中包含您要查找的值,然后根据该列进行调整。

date_pivot['year_month'] = date_pivot['year'].map(str) + "." + date_pivot['month']
date_pivot = pd.pivot_table(date_pivot, index=['name'], columns=['year_month'], aggfunc=len)

修改

您可能希望在创建新列时使用zfill(2)填充您的月份,以便您的列排序正确。否则2012.10将在月2012.2之前排序。

答案 1 :(得分:0)

重新创建列并将其返回

date_pivot.columns=list(map('{0[0]}.{0[1]}'.format, date_pivot.columns.values.tolist()))
date_pivot
Out[266]: 
       2012.1  2012.2
name                 
annie     2.0     NaN
david     NaN     3.0