我正在尝试通过密钥对数据框进行分组。按键重复两次。我想创建一个同时包含金额和这些金额的总和的新数据框。
这是我的数据框:
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
感谢任何建议。
答案 0 :(得分:1)
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