Python 如何在pandas中的pivot_表之后获得多级索引列?
数据帧:Python 如何在pandas中的pivot_表之后获得多级索引列?,python,pandas,Python,Pandas,数据帧: df = pd.DataFrame({ 'date': [1,1,2,2,3,4,4], 'id': [1,1,1,2,2,2,3], 'item': [200,201,200,333,334,334,444], 'buy': [1,1,2,5,4,0,1] }) df = df[['date','id','item','buy']] date id item buy 0 1 1 200 1 1 1 1
df = pd.DataFrame({
'date': [1,1,2,2,3,4,4],
'id': [1,1,1,2,2,2,3],
'item': [200,201,200,333,334,334,444],
'buy': [1,1,2,5,4,0,1]
})
df = df[['date','id','item','buy']]
date id item buy
0 1 1 200 1
1 1 1 201 1
2 2 1 200 2
3 2 2 333 5
4 3 2 334 4
5 4 2 334 0
6 4 3 444 1
方法1:
df2=df.pivot_表(索引=['id','item'],列=['date'],
aggfunc='sum',fill_value=0).reset_index()
如何获取“购买”列的“1”或“2”或“3”或“4”列
我的尝试是重命名像这样的列的名称
df2.columns = ["".join((str(i),str(j))) for i,j in df2.columns]
id item buy1 buy2 buy3 buy4
0 1 200 1 2 0 0
1 1 201 1 0 0 0
2 2 333 0 5 0 0
3 2 334 0 0 4 0
4 3 444 0 0 0 1
和df2['buy1',df2.buy2。。。这就是我想要的
这是我的问题
如何在pandas中的pivot_表之后获得多级索引列?直接在多级结构上,无需重命名
方法2: df2= df.groupby(['id','item','date']).buy.sum().unstack(fill_value=0.reset_index()) df2.columns.names=[''] 如果使用groupby&unstack方法2,我可以避免多级索引问题
但我还是想知道一种在pivot_表之后获取多级索引列的方法 对于
透视
,您可以指出值
,然后您将收到所需的内容
df.pivot_table(index=['id','item'], columns=['date'], values='buy',aggfunc='sum', fill_value=0).reset_index()
Out[64]:
date id item 1 2 3 4
0 1 200 1 2 0 0
1 1 201 1 0 0 0
2 2 333 0 5 0 0
3 2 334 0 0 4 0
4 3 444 0 0 0 1
哇!最简单的方法。在另一种情况下,首先是多级数据帧,我该怎么做?@J.Doe yep,:-)快乐编码人(PS:如果这是你需要的,你能接受吗)
id item 1 2 3 4
0 1 200 1 2 0 0
1 1 201 1 0 0 0
2 2 333 0 5 0 0
3 2 334 0 0 4 0
4 3 444 0 0 0 1
df.pivot_table(index=['id','item'], columns=['date'], values='buy',aggfunc='sum', fill_value=0).reset_index()
Out[64]:
date id item 1 2 3 4
0 1 200 1 2 0 0
1 1 201 1 0 0 0
2 2 333 0 5 0 0
3 2 334 0 0 4 0
4 3 444 0 0 0 1