我正在利用一个数据透视来汇总数据。数据格式如下:
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 :(得分: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