2017-12-02 111 views
0

我正在利用数据透视来卷起数据。该数据的形式为:将同一个表中的两个索引(列名?)合并为1?

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 

,这样我可以以后再定义的列名的某些范围。我怎样才能做到这一点?

回答

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

0

重新创建列和assgin回

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 
相关问题