我有一個這樣的資料框:
offer_id hurdle hurdle_lvl reward_value
0 5c0c1545a944456aa28dcf578e0cbdd2 35000.0 1 500.0
1 5c0c1545a944456aa28dcf578e0cbdd2 40000.0 2 1500.0
2 5c0c1545a944456aa28dcf578e0cbdd2 45000.0 3 3000.0
3 f21306541ae046edbdf0a79daea3a005 500.0 1 25.0
4 f21306541ae046edbdf0a79daea3a005 750.0 2 100.0
5 f21306541ae046edbdf0a79daea3a005 25000.0 2 1500.0
我需要重新格式化它
offer_id hurdle_1 hurdle_2 hurdle_3 reward_1 reward_2 reward_3
0 5c0c1545a944456aa28dcf578e0cbdd2 35000.0 40000.0 45000.0 500.0 1500.0 3000.0
1 f21306541ae046edbdf0a79daea3a005 500.0 750.0 25000.0 25.0 100.0 1500.0
因此,將障礙行和獎勵行堆疊為基于 hurdle_lvl 列的列。任何幫助是極大的贊賞
所以我使用了資料透視表:
y.pivot_table(index=y.groupby('hurdle_lvl').cumcount(), columns='hurdle_lvl', values=['hurdle','reward_value'])
但這給了我一個如下所示的資料框:
hurdle reward_value
hurdle_lvl 1 2 3 1 2 3
0 35000.0 40000.0 45000.0 500.0 1500.0 3000.0
1 500.0 750.0 30000.0 25.0 100.0 1500.0
問題是我丟失了 offer_id 映射。有什么方法可以將它與資料透視表結合起來?
uj5u.com熱心網友回復:
使用pivot_table和總結共同的價值觀。
out = df.astype({'hurdle_lvl': str}) \
.pivot_table(['hurdle', 'reward_value'], 'offer_id', 'hurdle_lvl',
aggfunc='sum', fill_value=0)
out.columns = out.columns.to_flat_index().str.join('_')
輸出:
>>> out
hurdle_1 hurdle_2 hurdle_3 reward_value_1 reward_value_2 reward_value_3
offer_id
5c0c1545a944456aa28dcf578e0cbdd2 35000 40000 45000 500 1500 3000
f21306541ae046edbdf0a79daea3a005 500 25750 0 25 1600 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362534.html
上一篇:Pandas創建一個帶有隨機值的多索引DataFrame
下一篇:熊貓系列/資料框的條件遞減
