簡體   English   中英

基於另一個排名列將行堆疊為列

[英]stack rows as columns based on another rank column

我有一個 dataframe 這樣的:

                           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 列將障礙和獎勵行堆疊為列。 任何幫助是極大的贊賞

所以我使用了 pivot 表:

y.pivot_table(index=y.groupby('hurdle_lvl').cumcount(), columns='hurdle_lvl', values=['hurdle','reward_value'])

但這給了我一個 dataframe ,如下所示:

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 映射。 有什么方法可以將它與透視表結合起來嗎?

使用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('_')

Output:

>>> 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM