如何分组并加入但保留熊猫的原始行

时间:2019-07-24 08:33:12

标签: python pandas

我正在尝试通过密钥对数据框进行分组。按键重复两次。我想创建一个同时包含金额和这些金额的总和的新数据框。

这是我的数据框:

import pandas as pd

df = pd.DataFrame([["key1", 800, "sales"], 
                   ["key1", 600, "cost"], 
                   ["key2", 500, "sales"], 
                   ["key2", 250, "cost"]], 
                  columns=["key","amount","type"])
df

    key amount  type
0   key1    800 sales
1   key1    600 cost
2   key2    500 sales
3   key2    250 cost

这是我希望输出显示的样子:

    key     sales   cost    sum
0   key1    800     600     1400
1   key2    500     250     750

我尝试了一个简单的groupby函数,该函数可以获取总和值,但是我想不出一种方法来在同一行上同时显示原始2个值。

df2 = df.groupby("key").agg({"key": 'first', 
                             "amount": 'sum'})

df2

        key     amount
key     
key1    key1    1400
key2    key2    750

我还尝试了左连接以将两个数据框组合在一起,但各个值仍分为两行:

df2.merge(df, how = "left", left_index = True, right_on = "key")

    key         key_x      amount_x key_y   amount_y    type
0   key1        key1        1400    key1    800         sales
1   key1        key1        1400    key1    600         cost
2   key2        key2        750     key2    500         sales
3   key2        key2        750     key2    250         cost

感谢任何建议。

1 个答案:

答案 0 :(得分:1)

使用pandas.DataFrame.pivot

df2 = df.pivot(index='key', columns='type', values='amount')
df2['sum'] = df2.sum(1)
print(df2)

输出:

type  cost  sales   sum
key                    
key1   600    800  1400
key2   250    500   750